可能重复:
extract regexp result from string and write it to a variable
这是我的命令:
grep -E'\ * [[:space:]] + FIN [[:space:]] +([^]] +?)')myfile
输出:
- FIN(SUCCESS)
我希望它只输出:
SUCCESS
我如何告诉grep
这样做?
答案 0 :(得分:7)
您可以将grep命令的输出传递给awk命令。
grep -E '*[[:space:]]+FIN[[:space:]]+([^)]+?)') myfile | awk '{print $2}'
我不确定如何单独使用grep,因为它并不是真正适合那个确切的用例。由于您位于grep所在的平台上,因此当您可以使用一个命令解决部分问题时使用管道,而另一个命令则使用另一个部分。
答案 1 :(得分:4)
grep
无法输出单个捕获组,但您可以使用sed
来执行此操作:
sed 's/\*[[:space:]]\+FIN[[:space:]]\+(\([^)]\+\))/\1/g' file
答案 2 :(得分:3)
如果您使用ack,则可以使用匹配组和--output
开关:
ack '\*\s+FIN\((.+?)\)' --output='$1' myfile