CLIに渡されると、AWK範囲の多数の例が見つかりました。たとえば、
awk '/start/,/end/' file
AWKファイルに範囲を含める方法は?
#!/usr/bin/awk -f
BEGIN{
}
{
# how do I express those "start" and "end" ranges?
}
END {
}
私のテキストファイルは次のとおりです。
...
don't care
don't care
start
record of interest
record on interest
...
end
don't care
don't care
...
ベストアンサー1
awkスクリプトの本文には次の形式があります。
*pattern* *action*
これらのうちの1つは省略できます。省略模様平均行動常に実行されます。省略行動デフォルトでは、現在の行が印刷されます。
範囲を表現する自然な方法は次のとおりです。模様部分は次のとおりです。
BEGIN {
somevar=5
}
/start/,/end/ { print }
END {
somevar=6
}
(開始時と同じ構造を維持するために、BEGINおよびENDセクションをそのままにしています。)
〜にある行動場所を追跡するために必要なものは次のとおりです。
BEGIN {
p=0
}
{
if (/start/) p=1
if (p) { print }
if (/end/) p=0
}
END {
p=0
}
ここではない模様だから、行動ブロックは各行に対して実行されます。 /に一致する行が表示されたら、p
フラグ()を1または「true」に設定します。/start
フラグがtrueの場合にのみその行を印刷します。 /が表示された場合、/end
フラグはリセットされます。 BEGINとENDブロックは重複しており、awkのデフォルト値は0 / falseです。