尾部/头部除 X 行末行/首行外的所有行

尾部/头部除 X 行末行/首行外的所有行

例如我有这个文件:

cat myfile
1
2
3
4
5

我想打印除前两行之外的所有行。输出应该是这样的:

tail -n $(( $(wc -l myfile | awk '{print $1}') - 2 )) myfile
3
4
5

是的,输出是正确的。但有一个问题,这个示例文件中有 5 行,对吗?如果我在此命令中使用超过 5 行,则输出应为空,但事实并非如此!

tail -n $(( $(wc -l myfile | awk'{print $1}') -数字))我的文件

这个输出应该是空的,但它不是

tail -n $(( $(wc -l myfile | awk '{print $1}') - 8 )) myfile

1
2
3
4
5

myfile 可以包含 X 行...谢谢帮助

答案1

tail -n+3输出从第三行开始的所有行。

head -n-3输出除最后三行之外的所有行。

答案2

我知道这已经很老了,但是为了后人。

给出输入(由 OP 发布),

cat << EOF > myfile
1
2
3
4
5
EOF

你可以使用 awk 解决这个问题

awk 'FNR > 2 {print $1}' myfile

将产生预期结果

3
4
5

使用 awk 版本 (GNU Awk 4.1.4, API: 1.1 (GNU MPFR 4.0.1, GNU MP 6.1.2)) 进行测试

相关内容