使用正则表达式提取多个值并将它们重新格式化为 shell oneliner 中的新字符串?

Extract multiple values using regex and reformat them into a new string in a shell oneliner?

举个简单的例子,我有一堆这样的行:

(1,2)
(3,4)

我想把它们变成这样的东西:

second value: 2; first value: 1
second value: 4; first value: 3

一般来说,我想使用正则表达式提取这些值,然后将它们用作格式化输出字符串的变量。

这可以在 shell oneliner 中使用 sed/awk 或类似的东西完成吗?

在 awk 中:

awk -F'[\(\),]' '{print "second value: ""; first value: "}'

即用“(”、“)”或“,”分隔每一行。然后它只打印出找到的第三个和第二个值(你的两个数字)。

使用 sed 删除括号,然后按所需顺序打印 , 两边的任何内容:

sed 's/[()]//g;s/\(.*\),\(.*\)/second value: ; first value: /' input_file

另一个 sedrev

$ rev file | sed 's/)/second value: /;s/,/; first value: /;s/(//'

second value: 2; first value: 1
second value: 4; first value: 3

你可以用一个 s 命令来完成:

sed 's/(\([0-9]*\),\([0-9]*\))/second value: ; first value: /' file