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

Ami*_*mit 33 bash awk sed lines

我试图删除文件的前两行,只是不打印到另一个文件.我不是在寻找一些奇特的东西.这是我在awk的尝试(失败):

awk '{ (NR > 2) {print} }' myfile
Run Code Online (Sandbox Code Playgroud)

抛出以下错误:

awk: { NR > 2 {print} }
awk:          ^ syntax error
Run Code Online (Sandbox Code Playgroud)

例:

'myfile'的内容:

blah
blahsdfsj
1 
2
3
4
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

1
2
3
4
Run Code Online (Sandbox Code Playgroud)

Rob*_*obS 71

使用尾巴:

tail -n+3 file
Run Code Online (Sandbox Code Playgroud)

从手册页:

   -n, --lines=K
          output the last K lines, instead of the last 10; or use  -n  +K
          to output lines starting with the Kth
Run Code Online (Sandbox Code Playgroud)


anu*_*ava 29

怎么样:

tail +3 file
Run Code Online (Sandbox Code Playgroud)

要么

awk 'NR>2' file
Run Code Online (Sandbox Code Playgroud)

要么

sed '1,2d' file
Run Code Online (Sandbox Code Playgroud)

  • sed 的另一个变体:`sed -n '3,$p' file` (2认同)

Chr*_*s J 24

你快到了.试试这个:

awk 'NR > 2 { print }' myfile
Run Code Online (Sandbox Code Playgroud)

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

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

awk 'NR > 2' myfile
Run Code Online (Sandbox Code Playgroud)


jay*_*ngh 6

awk基于pattern{action}陈述.在你的情况下,patternNR>2action要执行的print.这action也是default actionawk.

即便如此

awk 'NR>2{print}' filename

会工作正常,你可以缩短它

awk 'NR>2' filename.