我有很多长度可变的文件,我希望总是提取最后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 3head将为您提供文件的第一行(默认为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
复制相似问题