2013-04-10 71 views
-1

我有一個包含一個大的文本文件中的以下記錄:Unix的grep命令返回行組的文本文件,其中符合條件

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可以做到這一點。做這種事情的最好方法是什麼?

+0

我看到你只標記了unix,grep和find,但是awk可能對此有用。這裏有一個很好的列表:http://www.catonmat.net/blog/wp-content/uploads/2008/09/awk1line.txt – James 2013-04-10 13:16:01

+0

如果行中包含,是否要搜索「Jo」以匹配「約翰」?如果您的線路是'024567808鮑勃日期Jo等',您是否想要搜索「Jo」以匹配,還是隻有當Jo出現在第二個字段時才匹配? – 2013-04-10 13:28:09

+0

我正在尋找完整的工作爲'姓名' – DSD 2013-04-10 13:38:28

回答

2

這可能是你想要什麼:

awk '/^02/{f=0} /name/{f=1} f' file 

這一切都取決於你想要的「名」,只發生在線路上的具體位置,以及是否你想要的「名」,以僅匹配,如果它不是長單詞的一部分,例如你想要搜索「Jo」來匹配「John」嗎?

+0

非常聰明的答案!和你的聲望'6669'看起來不錯,我想打破它!所以+1 – Kent 2013-04-10 13:45:04