私の出力は次のとおりです
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