我无法搜索特定的字符串,因为它们非常相似,但我想要一些简单的方法来删除文件中的前4行。
它们也都是可变长度的。我已经考虑过了perl,这一切看起来都比我想象的要难,但如果可能的话,我想用Perl,AWK或shell命令来做。
有人有一个简单的方法吗?
答案 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可以在这里找到方便的参考:
答案 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”以及该索引的子串。