我想显示与正则表达式匹配的所有行
如果我有文件
foo
bar123
baz12435
lorem
ipsum
dolor
sit
amet
这display-from baz[0-9]* < file
可以返回(如果它显示匹配的行是否无关紧要)
lorem
ipsum
dolor
sit
amet
我如何在Linux(使用sed,awk或grep)中执行此操作
答案 0 :(得分:6)
答案 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