用shell删除一个文件的前N行

假设你想删除一个文本文件的前N行,并且你不想先将后面要保留的内容先保存到其他临时文件中,那么可以在shell中这样写(此处假设要删除的是 /root/file.txt 的前10行):

ex /root/file.txt << EOF

1,10d

wq

EOF

 

注意第二行的写法:1,10d 表示删除第1到第10行。同理,你要删除第3到第7行,可以写成 3,7d ,依此类推。

文章来源:http://www.codelast.com/

这种方法倒是有一个弊端:当你的文件行数 要删除的行数时(此处所说的“你的文件行数”不包括文件的最后一个空行,即:如果你的文件最后一行是一个空行,那么么此处所说的“你的文件行数”就不包括它),那么用这种方法就会一行都删不掉(而不是我们想像中的“会删除文件中的所有行”)。

例如,你的文件内容为(5行+一个空行):

11

22

33

44

55

(此处为一个空行,即:只有一个换行符 \n 的行)

 

那么使用 1,6d 就会删除不掉任何内容,只有使用 1,5d 才能删除所有内容。

 

NULL

发表评论

电子邮件地址不会被公开。 必填项已用*标注