我想在文档中每四行添加一个新行。
例如:
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 将匹配从第二行开始的每五行。第一个可以为零;在这种情况下,sed 的运行方式就好像它等于步骤一样。 (这是一个扩展。)
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
大概:
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"'
我们每四行更改一次输出记录分隔符。