5

可能重复:
从字符串中提取正则表达式结果并将其写入变量

这是我的命令:

grep -E '\*[[:space:]]+FIN[[:space:]]+([^)]+?)') myfile

它输出:

  • 鳍(成功)

我希望它只输出:

成功

grep该怎么做?

4

3 回答 3

8

您可以将 grep 命令的输出通过管道传输到 awk 命令。

grep -E '*[[:space:]]+FIN[[:space:]]+([^)]+?)') myfile | awk '{print $2}'

我不确定如何单独使用 grep 来做到这一点,因为它并不是真正针对那个确切的用例量身定制的。由于您在 grep 所在的平台上,因此当您可以让一个命令解决部分问题而另一个命令解决另一部分问题时,请使用管道对您有利。

于 2012-09-24T16:42:46.243 回答
4

grep无法输出单个捕获组,但您可以使用sed它来代替:

sed 's/\*[[:space:]]\+FIN[[:space:]]\+(\([^)]\+\))/\1/g' file
于 2012-09-24T16:55:22.933 回答
3

如果您使用ack那么您可以使用匹配组和--output开关:

ack '\*\s+FIN\((.+?)\)' --output='$1' myfile
于 2012-09-24T17:15:34.190 回答