当前位置:  开发笔记 > 编程语言 > 正文

跳过文件行直到找到匹配项,然后输出其余部分

如何解决《跳过文件行直到找到匹配项,然后输出其余部分》经验,为你挑选了3个好方法。

我可以编写一个简单的脚本来执行此操作,但在我不断寻求使用unix获得更多熟悉的程序时,我想学习使用内置命令的有效方法.

我需要处理具有可变数量标题行的非常大的文件.最后一个标题行包含文本'LastHeaderLine'.我想在这一行之后输出所有内容.(我不担心误报.)



1> mweerden..:

类似于Avi的答案,但没有包含"LastHeaderLine"的行.

sed -e '1,/LastHeaderLine/d'



2> Ralph M. Ric..:

为什么不尝试awk呢?它看起来像这样:

awk 'NR == 1, /LastHeaderLine/ { next } { print }' myinputfile > myoutputfile

其中NR == 1对于第一行为真,/ LastHeaderLine /与您的最后一个标题行匹配.逗号运算符允许以下函数{next}触发两个正则表达式范围内的所有句子.在这种情况下,它将跳转到下一行输入而无需进一步操作.对于所有其他输入行,它会将行打印到标准输出,您可以使用>重定向.



3> Avi..:

使用sed:

sed -ne '/LastHeaderLine/,$p' 

将匹配从正则表达式匹配到文件末尾的所有内容.'p'打印匹配的行.

编辑:

第二个想法,你不想打印匹配LastHeaderLine的行.这很难用sed.在perl中,您可以执行以下操作:

perl -ne 'if ($flag) {print;} if (/LastHeaderFile/) {$flag=1;}' 

这将严格按照正则表达式匹配打印行.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有