構造に特定の文字列が含まれている場合は、ファイルから特定のセットまたは構造を選択する方法は?

構造に特定の文字列が含まれている場合は、ファイルから特定のセットまたは構造を選択する方法は?

特定の文字列を含むコレクションを抽出したいと思います。たとえば、次のようになります。

ファイル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ブロックの最初の行ではなく空の行を対象とする場合()

関連情報