假设我有一个包含以下数据的文件 abc.csv:
abc
def
geh
ijk
lmn
opq
rst
现在,我想在第 2 行和第 6 行之后插入空行。
请建议我应该使用哪个命令。
答案1
$ seq 10 | sed '2G;6G'
1
2
3
4
5
6
7
8
9
10
该G
sed
命令将换行符后跟保留空间的内容(此处为空,因为我们没有在其中放置任何内容)附加到模式空间。因此,这是在匹配行下方添加空行的快速方法。
其他替代方法是a
ands
命令:
sed '2a\
6a\
'
或者:
sed '2s/$/\
/
6s/$/\
/'
一些sed
实现还支持:
sed '2s/$/\n/;6s/$/\n/'
答案2
sed -e '2a\ ' -e '6a\ ' input > output && mv output input
某些 sed(1) 风格可以-i
选择“就地”对文件进行操作(但这不可移植),或者尝试sponge
从 moreutils 中进行操作,但这两种方法都只是隐藏写入新文件,并且- -rename(2)
系统调用mv
(如果输出文件位于同一文件系统上)。
答案3
这应该有效:
awk 'NR==3||NR==7 {print " "} {print $0}' abc.csv > temporary.csv && mv temporary.csv abc.csv
答案4
您可以在 Ex 模式下使用 Vim:
ex -sc '6pu_|2pu_|x' abc.csv
pu_
追加空行x
保存并关闭