特定の文字列を含むコレクションを抽出したいと思います。たとえば、次のようになります。
ファイルabc.txt
に次のものが含まれています
abc 123
abcd 1234
abcde 12345
abc 123
abcd 123
abcde 12345
abc 123
abcd 1234
abcde 12345
これで、上のセットから2番目のセットの2番目の行にはないことがわかります1234
。だから私が抽出したいのは、そのような文字列を持つコレクションです。
abc 123
abcd 123
abcde 12345
答え1
> awk -v RS=$'\n\n' -v FS=$'\n' -v ORS=$'\n\n' '$2 ~ /123$/ {print}' abc.txt
abc 123
abcd 123
abcde 12345
答え2
GNUの標準プログラムです。sed
sed '/abc 123/{:1;$!{N;/\n$/!b1}};/\babcd 123\b/d' abc.txt
または
sed '/^$/!{:1;$!{N;/\n$/!b1}};/\babcd 123\b/d' abc.txt
abc 123
ブロックの最初の行ではなく空の行を対象とする場合()