【问题标题】:Recombine regex match groups into new string using grep使用 grep 将正则表达式匹配组重新组合成新字符串
【发布时间】:2019-12-09 11:53:03
【问题描述】:

假设我有一个文件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”

【问题讨论】:

    标签: regex linux bash grep


    【解决方案1】:

    您不能为此使用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
    

    【讨论】:

      猜你喜欢
      • 2016-06-17
      • 1970-01-01
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多