Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix grep命令返回文本文件中符合条件的行组_Unix_Awk_Grep_Find - Fatal编程技术网

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