如何使用bash从文本文件中删除前两行和后四行?

reb*_*bca 58 linux bash

我试图从我的文本文件中删除前两行和最后四行.我怎么能用Bash做到这一点?

Fré*_*idi 81

你可以结合尾巴头部:

$ tail -n +3 file.txt | head -n -4 > file.txt.new && mv file.txt.new file.txt
Run Code Online (Sandbox Code Playgroud)

  • bsd-utils的头部不能有负数到-n,所以这对bsd和macos不起作用. (11认同)
  • 请注意,在Windows下的Git Bash中,`tail -n + 3`起作用,但是`head -n -4`告诉`无效的行数'。似乎是一个错误(也许使用的是旧版本的head)。 (2认同)

Deb*_*tya 17

首尾

cat input.txt | tail -n +3 | head -n -4
Run Code Online (Sandbox Code Playgroud)

Sed解决方案

cat input.txt | sed '1,2d' | sed -n -e :a -e '1,4!{P;N;D;};N;ba'
Run Code Online (Sandbox Code Playgroud)

  • 你不需要使用`cat`:`tail -n +3 input.txt | ...`完美地工作(和`sed`一样). (4认同)
  • 谢谢你的sed解决方案; 我需要它在不允许负头行数的机器上.(顺便说一下,第一个命令中的4应该被否定.) (3认同)

fin*_*flu 10

这是我发现的最快捷方式:

sed -i 1,2d filename
Run Code Online (Sandbox Code Playgroud)

  • 这只会删除前两行,但最后四行也应该删除。 (4认同)