使用正则表达式提取多个值并将它们重新格式化为 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
另一个 sed
和 rev
$ 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
举个简单的例子,我有一堆这样的行:
(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
另一个 sed
和 rev
$ 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