我试图通过不将其打印到另一个文件来删除文件的前两行。我不是在寻找一些奇特的东西。这是我(失败)尝试awk:
awk '{ (NR > 2) {print} }' myfile
抛出以下错误:
awk: { NR > 2 {print} }
awk: ^ syntax error
示例:
'myfile'的内容:
blah
blahsdfsj
1
2
3
4
我想要的结果是什么:
1
2
3
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}
语句。在您的情况下,pattern
为NR>2
,您要执行的action
为print
。此action
也是default action
的 awk
。
所以即使
awk 'NR>2{print}' filename
可以正常工作,你可以将它缩短为
awk 'NR>2' filename
。