Unix grep命令返回文本文件中符合条件的行组
我有一个包含以下记录的大文本文件:Unix grep命令返回文本文件中符合条件的行组,unix,awk,grep,find,Unix,Awk,Grep,Find,我有一个包含以下记录的大文本文件: 024567808 name date etc.. 0376567 dfu ugig etc.. 0388888 dtg hii etc.. 032357 tuth gug etc.. 025789 gkh kjkjk etc.. 使用grep命令,我能够检索包含关键字的行。如果下一条记录以03开头,如何检索 例如,我搜索name,它返回第一行。我想要这个记录以及所有03行,直到下一个02记录 输出应为: 024567808 name date etc..
024567808 name date etc..
0376567 dfu ugig etc..
0388888 dtg hii etc..
032357 tuth gug etc..
025789 gkh kjkjk etc..
使用grep命令,我能够检索包含关键字的行。如果下一条记录以03开头,如何检索
例如,我搜索name
,它返回第一行。我想要这个记录以及所有03行,直到下一个02记录
输出应为:
024567808 name date etc..
0376567 dfu ugig etc..
0388888 dtg hii etc..
032357 tuth gug etc..
我认为grep对于这类任务来说还不够强大。也许awk能做到。做这类事情最好的方法是什么?这可能就是你想要的:
awk '/^02/{f=0} /name/{f=1} f' file
这完全取决于您是否希望“name”仅出现在一行中的特定位置,以及是否希望“name”仅在它不是较长单词的一部分时匹配,例如,您是否希望搜索“Jo”以匹配“jon”?我看到您只标记了unix、grep和find,但是awk对此可能很有用。这里有一个很好的单行程序列表:如果该行包含“jon”,是否要搜索匹配的“Jo”?如果您的行是
024567808 Bob date Jo etc
您希望搜索“Jo”匹配还是只在Jo出现在第二个字段时匹配?我正在搜索完整的workd作为“name”我不知道“我正在搜索完整的workd作为“name”是什么意思,所以我不知道该评论是否/如何与我的两个问题相关。你能用一些是/否的答案或者一些额外的输入/输出样本来澄清吗?非常聪明的答案!!而且你的声誉6669
看起来不错,我想打破它!so+1