sed(GNU)

sed(GNU)

ドキュメントの4行ごとに新しい行を追加したいと思います。

たとえば、

abc
def
ghi
jkl
mno
pqr
stu
vw
xyz

次のようにする必要があります。

abc
def
ghi
jkl

mno 
pqr
stu
vw

xyz

答え1

sed(GNU)

sed '0~4G'

man sed は ~ を次のように解釈します。

first〜stepは、
最初の行から始まるすべての最初のステップと一致します。たとえば、「sed -n 1〜2p」は入力ストリームのすべての奇数行を印刷し、アドレス2〜5は2行目から始まり、5行目ごとに一致します。最初の値はゼロです。この場合、sedはstepと同じように機能します。 (これは拡張です。)

sed(その他)

短い(100行は見苦しい):

sed 'n;n;n;G'

または、新しい行数を計算します。

sed -e 'p;s/.*//;H;x;/\n\{4\}/{g;p};x;d'

または、より移植性を高めるために、以下を作成します(一部のsedバージョンのコメントを削除)。

sed -e '             # Start a sed script.
         p            # Whatever happens later, print the line.
         s/.*//       # Clean the pattern space.
         H            # Add **one** newline to hold space.
         x            # Get the hold space to examine it, now is empty.
         /\n\{4\}/{   # Test if there are 4 new lines counted.
             g        # Erase the newline count.
             p        # Print an additional new line.
           }          # End the test.
         x            # match the `x` done above.
         d            # don't print anything else. Re-start.
       '              # End sed script.

アッ

おそらく:

awk '1 ; NR % 4 == 0 {printf"\n"} '

答え2

次のコマンドを試してください。

awk ' {print;} NR % 4 == 0 { print ""; }'

答え3

 sed -e 'n;n;n;G'

 perl -pe '$. % 4 or s/$/\n/' 

 perl -lpe '$\ = $. % 4 ? "\n"  : "\n\n"' 

出力レコード区切り文字を4行ごとに変更します。

関連情報