一致しないパターン間の線を除き、パターン間の線を印刷します。

一致しないパターン間の線を除き、パターン間の線を印刷します。

だから、次のような入力があります。

start 
abcd
sfd 
afsdaf
afsaf
end 1

start 
sdfo
efsf
end 0

start 
sdf
efsf
end 2

したがって、開始と終了(含む)の間の行だけを印刷したいが、行の2番目のフィールドがend0より大きい場合にのみ印刷したいと思います(したがって、startand end 1startandの間、andの間end 2ではありません)。私ができる方法はありますか?startend 0

ベストアンサー1

$ awk -v RS= -v ORS='\n\n' '$NF' file
start
abcd
sfd
afsdaf
afsaf
end 1

start
sdf
efsf
end 2

レコードは空行で区切られており、すべて「start」で始まり「end」で終わるため、「start」で始まり「end」で終わるという事実は不適切です。私たちが考慮する必要があるのは、上記のように、各空行で区切られた段落の最後のスペースで区切られたフィールドがゼロではないことです。If RS is nullから探すhttps://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.htmlRS=何をすべきかわからない場合。

おすすめ記事