上下に空行がある行を選択

上下に空行がある行を選択

私の出力は次のとおりです

A
A
A

B

A
A
A

C

A
...

空の行に囲まれた行をフィルタリングしたいです。
この例では、B背中になりますC

ベストアンサー1

awkは入力を「段落」として読み取るか、空のRS文字列に設定した場合(GNU awk)。 (RS同様に設定します\n\n+が、まったく同じではありません。)これにより、改行文字を含まないすべてのレコードを印刷できます。

$ awk -vRS= '$0 !~ /\n/' file1
B
C

最初の行と最後の行の後に空白行がある場合、または前にある場合は、最初の行と最後の行も印刷され、ファイルの先頭と末尾が「空行」として効果的に処理されます。次のように実際の空白行が必要な場合:

awk 'BEGIN {lines=2} /^$/ {if (lines == 1) print prev; lines=0 } 
     !/^$/ {lines += 1}  {prev=$0}' file1

おすすめ記事