パターンに応じて特定の段落を出力する方法は? [コピー]

パターンに応じて特定の段落を出力する方法は? [コピー]

次のサンプルファイルがあります。

# This is a test file. This is a test file. This is a test file  
This is a test file. This is a test file. This is a test file.  
This is a test file.

# Need to output just this paragraph.Need to output just this paragraph.  
Need to output just this paragraph TOO. Need to output just this paragraph.  
Need to output just this paragraph.

「#」から始まり、段落の最後の文まで2番目の段落を出力する必要があります。

パターンに基づいてgrepして出力する方法は?ファイルにさらに段落があると仮定すると、「TOO」という単語を含む段落を出力したいと思います。

ベストアンサー1

段落が空行で区切られた場合:

awk -v RS= -v ORS='\n\n' /TOO/

空のレコード区切り記号(RS)は、次のことを意味します。短絡モードここで、レコードは一連の空行に分かれています。

分離された場合#

awk -v RS='#' '/TOO/ {print RS $0}'

または

pcregrep -Mo '#[^#]*?TOO[^#]*'
  • -M複数行の場合grep
  • -o一致する部分のみ出力

おすすめ記事