例如我有这个文件:
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)) 进行测试