awkで空行区切りの各ブロックごとに対して指定したキーワードがある場合は除外する
Pocket

空行区切りのブロックに対して、特定のキーワードを持つブロックを除外して出力する、ということをやりたいというツイートを見かけて、将来的に自分にも必要になる時が来るかもしれないので備忘として残しておくことにした。とりあえず、ここに記述したようにawkを使えばいけるようだ。

sed '1d;$d' test.txt | awk -vRS= -vORS='\n\n' '!/XXX/'
Sponsored Links

[root@BS-PUB-CENT7-01 ~]# cat test.txt
#####
aaa
bbb
ddd

ddd
XXX
fff

ggg
hhh
iii

XXX
kkk
lll
#####
[root@BS-PUB-CENT7-01 ~]# sed '1d;$d' test.txt | awk -vRS= -vORS='\n\n' '!/XXX/'
aaa
bbb
ddd

ggg
hhh
iii

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*