我有很多长度可变的文件,我希望总是提取最后6-8行,我尝试使用tail -8 myfile.txt
,但它返回myfile.txt
的最后8行
如何修改代码以返回从末尾计数的第8-6行?
发布于 2015-05-08 12:40:13
您可以使用head
和tail
命令。为了逆转其输出,请使用tac
命令(cat
向后)--例如,这将提供您想要的输出:
tac testfile | head -n 8 | tail -n 3
head
将为您提供文件的第一行(默认为10行,您可以使用-n
参数更改它),tail
对最后一行也会这样做。因此,执行head -n 8
会给出前8行,将其传递给tail -n 3
,给出最后3行,然后是第6-8行。
对于具有以下内容的Testfile
Line1
Line2
Line3
Line4
Line5
Line6
Line7
Line8
Line9
Line10
Line11
Line12
这将产生以下结果:
Line7
Line6
Line5
发布于 2015-05-08 12:41:48
您可以使用tail
获取最后8行,然后使用head
获取其中的前3行:
$ tail -8 mfile.txt | head -3
发布于 2015-05-08 12:55:32
只需在tac中使用awk:
tac file | awk 'NR >= 6 && NR <= 8'
这将从tac的输出中打印第6、7和8行,后者反向打印文件中的行。
您还可以使用fedorqui建议的范围表达式(谢谢):
tac file | awk 'NR == 6, NR == 8'
当第一部分为真时,表达式计算为真,直到第二部分为真(我是否已多次提到“真”一词?)
https://stackoverflow.com/questions/30124062
复制相似问题