我需要在任何以-
结尾的电话号码之前添加一个}
符号,并删除该}
例如,考虑以下示例文件:
*My phone number is 9999999999}<br>
Ram is calling to 88888888}<br>
653426} Rohan is trying to call 777777777*
预期输出:
*My phone number is -9999999999<br>
Ram is calling to -88888888<br>
-653426 Rohan is trying to call 777777777*
答案 0 :(得分:0)
这可以解决问题:
sed -i 's/\s\([0-9]*\)\}/ -\1/g' vv.txt
说明:
vv.txt是您提供的示例中的文件
\s\([0-9]*\)\}
:将捕获空格中包含的所有内容,并且最多是}
-\1/g
:在这里,我们将上一步中在空间\s
和符号} 之间捕获的所有内容替换为负号
示例文件上的输出为:
*My phone number is -9999999999<br>
Ram is calling to -88888888<br>
Rohan is trying to call 777777777*
要处理注释中提到的其他情况,您可以做两件事:
1。
sed -i 's/\([0-9]*\)\}/ -\1/g' vv.txt
但是如果行以您所说的数字开头,则会在-前面添加一个空格。
或者,如果您不想要空间。
2。
sed -i 's/\s\([0-9]*\)\}/ -\1/g;s/^\([0-9]*\)\}/-\1/g' vv.txt