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

jcu*_*bic 5 linux bash awk grep sed

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

如果我有一个文件

foo
bar123
baz12435
lorem
ipsum
dolor
sit
amet
Run Code Online (Sandbox Code Playgroud)

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

lorem
ipsum
dolor
sit
amet
Run Code Online (Sandbox Code Playgroud)

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

unw*_*ind 6

只需使用grep:

$ grep -E 'baz[0-9]*' file -A9999
Run Code Online (Sandbox Code Playgroud)

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


Bar*_*Sas 5

sed -e '/baz[0-9]*/,$b' -e 'd' file
Run Code Online (Sandbox Code Playgroud)

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


Pau*_*ce. 5

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

sed  '1,/baz[0-9]*/d' file
Run Code Online (Sandbox Code Playgroud)

接受答案的简单版本:

sed  -ne '/baz[0-9]*/,$p' file
Run Code Online (Sandbox Code Playgroud)

有些版本在某些情况下sed不需要-e除外(但无论如何都接受它)而有些则需要.这些例子说明了这两种类型