如何显示在Linux中匹配正则expression式的所有行

我想显示匹配正则expression式的所有行

如果我有一个文件

foo bar123 baz12435 lorem ipsum dolor sit amet 

这个display-from baz[0-9]* < file sould return(显示匹配的行是否无关紧要)

 lorem ipsum dolor sit amet 

我怎样才能在Linux(使用sedawkgrep

 sed -e '/baz[0-9]*/,$b' -e 'd' file 

这将删除输入中除第一行匹配正则表达式(/ baz [0-9] * /)到文件末尾($)之外的所有行。

接受的答案打印包含该模式的行。 如果您想排除该行:

 sed '1,/baz[0-9]*/d' file 

接受答案的简单版本:

 sed -ne '/baz[0-9]*/,$p' file 

一些版本的sed不需要-e除了在某些情况下(但无论如何都接受),有些则可以。 这些例子说明了两种类型。

只要使用grep:

 $ grep -E 'baz[0-9]*' file -A9999 

在这里,' -A '选项告诉grep匹配后显示多少行。 这有点笨重,但是如果输入文件的长度有一个上限,那么它可能工作正常。

使用awk

 awk '/baz/{f=1;next}f' file 
 ruby -ne 'print unless 1 .. /baz[0-9]/' file 

我使用grep来搜索文件中的关键字。 我使用以下内容:

语法=> grep模式文件名
 examlpe
 grep amet / path_to_file