如何删除文件中的第一行?

时间:2010-04-16 10:58:50

标签: perl file-io awk line

我无法搜索特定的字符串,因为它们非常相似,但我想要一些简单的方法来删除文件中的前4行。

它们也都是可变长度的。我已经考虑过了perl,这一切看起来都比我想象的要难,但如果可能的话,我想用Perl,AWK或shell命令来做。

有人有一个简单的方法吗?

10 个答案:

答案 0 :(得分:13)

tail -n+2 filename

将跳过filename中的第一行并将其输出到stdout。 -n+2选项意味着开始输出以第二行开头的行。

当然,您可以用您需要的任何数字替换2(您的标题和实际问题内容分别为第一和第五)。

答案 1 :(得分:7)

sed是最简单的。要删除文件的第一行,请执行以下操作:

sed '1d' file.txt

或者,要删除前四行,请执行:

sed '1,4d' file.txt

答案 2 :(得分:5)

跳过前4行

$ awk 'NR>4' file >temp;mv temp file

$ more +5 file >temp;mv temp file

$ perl -i.bak -ne '$.>=4 && print' file

答案 3 :(得分:4)

sed -i '1,4d' <filename>

将删除其输入文件的前四行。 (如果您只想删除第一行,则可以改为使用'1d'。)

-i标志代表就地编辑,这意味着输入文件也是输出文件,因此更改将被写回原始文件。如果您希望文件保持原样并且修改后的内容只是写入stdout,则只需省略-i

这个和许多其他sed 1-liners可以在这里找到方便的参考:

http://sed.sourceforge.net/sed1line.txt

答案 4 :(得分:2)

tail -n +5 file > temp
mv temp file

答案 5 :(得分:2)

perl -pe'1..4and$_=""'

等同于

sed 1,4d

perl -ne'1..4or print'

等同于

sed -n '1,4!p'

您可以使用与-i相同的sed

答案 6 :(得分:1)

试试这个:sed -i 1d file

一般规则:

删除n第一行:sed '1,nd' file.txt
例如:sed '1,4d' file.txt删除前4行

答案 7 :(得分:1)

不需要脚本语言的解决方案(如awk,sed,perl等):

tail -n `expr \`cat FILE | wc -l\` - 1` FILE > FILE.new; mv FILE.new FILE

想法是计算文件中的行数,然后减去一行,然后将结果传递给'tail'命令。

答案 8 :(得分:1)

使用File :: Tie。这没关系。

答案 9 :(得分:-1)

在文件中搜索第四个“\ r \ n”或“\ n”以及该索引的子串。