假设我有一个包含以下内容的文件 file.txt
:
somelogoutput
INFO: 1549 ducks: 1544 children playing, 5 something-else.
morelogoutput
以及以下与上面文件中的中间行匹配的正则表达式:
grep -P "(\d*) ducks: (\d*) children playing, (\d*) something-else" file.txt
如何使用匹配组创建格式化字符串?
例如:“(匹配组 2)/(匹配组 1)”
例如:“1544/1549”
最佳答案
你不能为此使用 grep
,但你可以使用 awk
:
awk '/^INFO:/{printf "%s/%s\n", $4, $2}' file.txt
虽然我会推荐 awk
来完成您在问题中描述的任务,但根据正则表达式组重新组合字符串是 sed
的任务:
sed -rn 's/INFO: ([[:digit:]]*) ducks: ([[:digit:]]*) children.*/\2\/\1/p' file.txt
关于regex - 使用 grep 将正则表达式匹配组重新组合成新字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57299603/