首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用shell脚本提取txt文件的最后8-6行。

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

Stack Overflow用户
提问于 2015-05-08 12:36:50
回答 3查看 243关注 0票数 1

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

如何修改代码以返回从末尾计数的第8-6行?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-08 12:40:13

您可以使用headtail命令。为了逆转其输出,请使用tac命令(cat向后)--例如,这将提供您想要的输出:

代码语言:javascript
运行
复制
tac testfile | head -n 8 | tail -n 3

head将为您提供文件的第一行(默认为10行,您可以使用-n参数更改它),tail对最后一行也会这样做。因此,执行head -n 8会给出前8行,将其传递给tail -n 3,给出最后3行,然后是第6-8行。

对于具有以下内容的Testfile

代码语言:javascript
运行
复制
Line1
Line2
Line3
Line4
Line5
Line6
Line7
Line8
Line9
Line10
Line11
Line12

这将产生以下结果:

代码语言:javascript
运行
复制
Line7
Line6
Line5
票数 1
EN

Stack Overflow用户

发布于 2015-05-08 12:41:48

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

代码语言:javascript
运行
复制
$ tail -8 mfile.txt | head -3
票数 2
EN

Stack Overflow用户

发布于 2015-05-08 12:55:32

只需在tac中使用awk:

代码语言:javascript
运行
复制
tac file | awk 'NR >= 6 && NR <= 8'

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

您还可以使用fedorqui建议的范围表达式(谢谢):

代码语言:javascript
运行
复制
tac file | awk 'NR == 6, NR == 8'

当第一部分为真时,表达式计算为真,直到第二部分为真(我是否已多次提到“真”一词?)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30124062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档