2017-05-03 5 views
1
$ cat /tmp/zfssa_check_raw.log 
====== aps_akd_service_offline.output ====== 
WARN: akd service state is online 
====== aps_akd_service_offline.result:1 ====== 

固定パターン文字列を使用すると、期待どおりに動作します。変数を使用して2つのパターン間の線を抽出する方法

$ awk '/aps_akd_service_offline.output/{flag=1;next}/aps_akd_service_offline.result/{flag=0}flag' /tmp/zfssa_check_raw.log 
WARN: akd service state is online 

しかし、私は柔軟なパターンを表現するために、AとBの変数を使用し、 は、それは何も表示されません。私はなぜ、誰かがここで助けてくれるのか分からないのですか?

$ awk -v a="aps_akd_service_offline.output" -v b="aps_akd_service_offline.result" '/a/{flag=1;next}/b/{flag=0}flag' /tmp/zfssa_check_raw.log 

$ a="aps_akd_service_offline.output" 
$ b="aps_akd_service_offline.result" 

$ awk -va="${a}" -vb="${b}" '/a/{flag=1;next}/b/{flag=0}flag' /tmp/zfssa_check_raw.log 
+0

形式にそれ読める – RomanPerekhrest

答えて

0

~オペレータ変数を使用して正規表現マッチを行うには:

awk -v a="aps_akd_service_offline.output" -v b="aps_akd_service_offline.result" \ 
      '$0 ~ a {flag=1;next} $0 ~ b {flag=0}flag' /tmp/zfssa_check_raw.log 
+1

おかげ作るためにあなたの質問を、それは私の問題を解決しました。 – Kevin

関連する問題