使用BASH或awk或sed或其他方法删除文件的前两行

时间:2012-01-13 21:51:24

标签: bash awk sed lines

我试图通过不将其打印到另一个文件来删除文件的前两行。我不是在寻找一些奇特的东西。这是我(失败)尝试awk:

awk '{ (NR > 2) {print} }' myfile

抛出以下错误:

awk: { NR > 2 {print} }
awk:          ^ syntax error

示例:

'myfile'的内容:

blah
blahsdfsj
1 
2
3
4

我想要的结果是什么:

1
2
3
4

4 个答案:

答案 0 :(得分:64)

使用尾巴:

tail -n+3 file

来自手册页:

   -n, --lines=K
          output the last K lines, instead of the last 10; or use  -n  +K
          to output lines starting with the Kth

答案 1 :(得分:27)

怎么样:

tail +3 file

OR

awk 'NR>2' file

OR

sed '1,2d' file

答案 2 :(得分:22)

你快到了。试试这个:

awk 'NR > 2 { print }' myfile

awk是基于规则的,并且规则在它通过的块之前显示为裸(即没有大括号)。

正如Jaypal所指出的那样,在awk中,如果你想要做的只是打印符合规则的行,你甚至可以省略动作,从而简化命令:

awk 'NR > 2' myfile

答案 3 :(得分:6)

awk基于pattern{action}语句。在您的情况下,patternNR>2,您要执行的actionprint。此action也是default action awk

所以即使

awk 'NR>2{print}' filename

可以正常工作,你可以将它缩短为

awk 'NR>2' filename