使用shell脚本提取txt文件的最后8-6行

时间:2015-05-08 12:36:50

标签: shell

我有很多长度可变的文件,我想总是提取最后6-8行。我尝试使用tail -8 myfile.txt,但它返回myfile.txt的最后8行

如何修改代码以返回从末尾算起的8-6行?

3 个答案:

答案 0 :(得分:2)

您可以使用tail获取最后8行,然后使用head获取前3行:

$ tail -8 mfile.txt | head -3

答案 1 :(得分:1)

您可以使用headtail命令。要反转其输出,请使用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

答案 2 :(得分:1)

只需使用带有tac的awk:

tac file | awk 'NR == 6, NR == 8'

这将从tac的输出中打印第6,7和8行,它会反向打印文件中的行。

您也可以使用范围表达式,如fedorqui(谢谢)所示:

if(getIntent().hasExtra("Type"))
        type = getIntent().getStringExtra("Type");

当第一部分为真时,表达式的计算结果为真,并且在第二部分为真之前保持为真(我提到单词"真"足够多次?)