头部的反面是什么?我想要除文件的前N行以外的所有行

Nic*_*ott 130 scripting command-line tail unix-head

由于未知长度的文本文件,我怎么能读,例如所有,但第2行的文件?我知道tail会给我最后N行,但我不知道N是提前的.

所以对于一个文件

AAAA
BBBB
CCCC
DDDD
EEEE
Run Code Online (Sandbox Code Playgroud)

我想要

CCCC
DDDD
EEEE
Run Code Online (Sandbox Code Playgroud)

并为一个文件

AAAA
BBBB
CCCC
Run Code Online (Sandbox Code Playgroud)

我会得到的

CCCC
Run Code Online (Sandbox Code Playgroud)

Joe*_*nos 195

tail --help 给出以下内容:

  -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)

因此,要过滤掉第一2行,-n +3应该为您提供所需的输出(从第3行开始).

  • 除了我之外,对每个人来说可能都是显而易见的,但是 +K 是 _1-indexed_ 第 K 行,所以例如 `tail -n +1` 相当于 `cat`。要获取除第一行之外的所有内容,您需要执行“tail -n +2”。 (4认同)
  • 奇怪的是,我的手册页没有列出选项,但它工作得很好 - 谢谢! (2认同)

小智 21

假设您的尾部版本支持它,您可以指定在X行之后开始尾部.在你的情况下,你做2 + 1.

tail -n +3

[mdemaria@oblivion ~]$ tail -n +3 stack_overflow.txt
CCCC
DDDD
EEEE
Run Code Online (Sandbox Code Playgroud)


jan*_*anm 12

使用awk的简单解决方案:

awk 'NR > 2 { print }' file.name
Run Code Online (Sandbox Code Playgroud)

  • `{print}`是默认操作,可以省略. (6认同)

lhf*_*lhf 7

试试sed 1,2d.根据需要更换2.


Jim*_*wis 6

tail -n +linecount filename将开始在线路输出linecountfilename,所以tail -n +3 filename 应该做你想要什么.

  • @iso:感谢单挑 - 旧版本的`tail`接受了我在原始答案中使用的语法,但现在需要使用显式的`-n`选项.我已相应更新了我的答案. (2认同)