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

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

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