基本上,通过管道将命令或文本块传递给以下内容:(tail -n 3
例如)打印仅有的最后三行到stdout
。是否有等效或类似的方法来执行与之相反的操作?因此,在这个例子中,它会打印全部 但最后三行到stdout
。
答案1
基于@don_crissti 的评论;如果您觉得这有帮助,请为他的评论点赞。
如果我有a
包含以下内容的文件:
1
2
3
4
5
6
7
8
9
10
我想得到所有但最后三行我可以运行head -n -3
它来生成以下内容:
# head -n -3 a
1
2
3
4
5
6
7
答案2
一种方法可以是这样的(不是很优雅,但经过测试并且有效):
a=$(wc -l <file.txt);a=$((a-3));sed ''$a'q;' file.txt
wc -l 返回文件的行数。行数现在分配给 a。
因为我们想要除最后 3 行之外的所有行,所以我们减少 a 然后使用 sed 打印直到文件的 ath 行。