将字符串中的最后一个数值括在括号中

将字符串中的最后一个数值括在括号中

POP9我有一个文本文件,其中包含诸如, POP10- 一般情况下的单词实例。同一文件还具有单词实例,例如, , ie `.POPnumberPOP(1)POP(2)POP(number)

我正在寻找一种方法将所有实例转换为并让现有实例保持不变。我可以通过什么方式实现它?POPnumberPOP(number)POP(number)sed

答案1

sed 's/\(POP\)\([0123456789]\{1,\}\)/\1(\2)/g' < input.txt > output.txt

哪里\(...\)习惯了捕获\1匹配的内容,以便它们可以在,中的替换中使用\2[0123456789]匹配集合中的任何单个字符,并\{1,\}匹配前面的一个或多个字符,这里是数字。

如果您sed支持-E扩展正则表达式,您可以使用以下方法缩短它(并使其更易于阅读):

sed -E 's/(POP)([0123456789]+)/\1(\2)/g' < input.txt > output.txt

相关内容