次の awk コマンドを理解する方法は?
nawk 'a-- >= 0; /datamart_extractrelations_static/ {a = 30}' app.log
awk プログラムの形式は次のとおりです。
pattern { action }
「a-- >= 0」は何をしますか? この操作はいつ実行されますか?
コマンドは次と同じです。
nawk 'a-- >= 0 {print}; /datamart_extractrelations_static/ {a = 30}' app.log
Ifは、アクションが指定されていない場合に実行されるデフォルトのアクションであるa-- >= 0
awk
ため、現在の行を出力します。print
awk
その結果、コマンドは、パターンを含む行の 30 番目の行を出力します。datamart_extractrelations_static
これをよりよく理解するには、次のコマンドを試してみてください。
awk '1' input
1
常に評価されるため、true
デフォルトのアクションはprint
awk
入力のすべての行を変更せずに出力します。
入力に datamart_extractrelations_static が見つかった後、30 行を出力するイディオムを正しく理解していない人がいます。正しいコードについては、一致するパターンに続く行を sed または awk で印刷するを参照してください。あなたが投稿したコードには、巨大なファイルの場合に var がゼロ以下に減少し続け、最終的にラップアラウンドして再び正のように見えないことを確認するための主要なテスト (カウント変数a
に名前を付ける人???) がありません。a