我想显示匹配正则expression式的所有行
如果我有一个文件
foo bar123 baz12435 lorem ipsum dolor sit amet
这个display-from baz[0-9]* < file
sould return(显示匹配的行是否无关紧要)
lorem ipsum dolor sit amet
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