Regex Grep模式匹配在输出中省略部分

Regex Grep模式匹配在输出中省略部分,regex,grep,Regex,Grep,是否可以仅使用一个grep和regexp组合来实现以下功能。假设我有这样一个文件: $ cat f.txt line 1 foo line 2 boo no match line 3 blank line X no match 我想匹配所有以单词行开始并后跟数字的行,但只显示后面的内容,因此匹配的部分是(.*) 你能说匹配但不显示这部分吗^line[0-9]+就像做grep-o'^line[0-9]+' 因此,我的预期输出如下所示 $ grep -E ***__magic__*** f.txt

是否可以仅使用一个
grep
regexp
组合来实现以下功能。假设我有这样一个文件:

$ cat f.txt
line 1 foo
line 2 boo
no match
line 3 blank
line X no match
我想匹配所有以单词
行开始并后跟数字的行,但只显示后面的内容,因此匹配的部分是
(.*)

你能说匹配但不显示这部分吗
^line[0-9]+
就像做
grep-o'^line[0-9]+'

因此,我的预期输出如下所示

$ grep -E ***__magic__*** f.txt 
foo
boo
blank

给出您的示例文件:

$ cat cat_1.txt
line 1 foo
line 2 boo
no match
line 3 blank
line X no match
使用Perl很容易做到这一点:

perl -lne 'print $1 if /^line \d+ (.*)/' cat_1.txt
或与:

无论哪种情况,打印:

foo
boo
blank
你可以使用sed

~$ cat 1.txt
line 1 foo
line 2 boo
no match
line 3 blank
line X no match


$ grep -E '^line [0-9]' 1.txt | sed 's/^line [0-9] //'
foo
boo
blank
已更新 …或不使用sed

$ grep -E '^line [0-9]' 1.txt | grep -oE '[a-z]*$'
foo
boo
blank

换句话说,您只需要显示
foo
boo
blank
?如果是这样,你就不能把预期的结果添加到问题中吗?如果你觉得问题不清楚的话,你就不能编辑一下吗。这个例子并不重要,我只是想知道是否可以使用
regexp
sign从输出中省略匹配的某些部分。对于正则表达式,示例(输入和预期输出)总是很重要的-我还没有看到与此规则相矛盾的问题。无论如何,我想不可能在grep中使用捕获组。在grep中使用-P选项是可能的。检查此项我喜欢sed解决方案,我已接受此答案,但它说我需要15个声誉才能投票:/@user100101011:谢谢!其他人似乎无缘无故地投了反对票。祝你好运事实上,是的。我放“猫”只是为了看清楚
~$ cat 1.txt
line 1 foo
line 2 boo
no match
line 3 blank
line X no match


$ grep -E '^line [0-9]' 1.txt | sed 's/^line [0-9] //'
foo
boo
blank
$ grep -E '^line [0-9]' 1.txt | grep -oE '[a-z]*$'
foo
boo
blank