如何在linux中显示匹配正则表达式的所有行

时间:2010-09-15 14:03:16

标签: linux bash sed awk grep

我想显示与正则表达式匹配的所有行

如果我有文件

foo
bar123
baz12435
lorem
ipsum
dolor
sit
amet

display-from baz[0-9]* < file可以返回(如果它显示匹配的行是否无关紧要)

lorem
ipsum
dolor
sit
amet

我如何在Linux(使用sed,awk或grep)中执行此操作

6 个答案:

答案 0 :(得分:6)

只需使用grep:

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

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:5)

接受的答案打印包含图案的线条。如果要排除该行:

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

接受答案的简单版本:

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

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

答案 3 :(得分:1)

使用awk

awk '/baz/{f=1;next}f' file

答案 4 :(得分:-1)

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

Syntax => grep pattern filename
examlpe
grep amet /path_to_file

答案 5 :(得分:-1)

ruby -ne 'print unless 1 .. /baz[0-9]/' file