根据条件在任何电话号码前添加“-”号

时间:2018-08-23 05:38:37

标签: bash sed

我需要在任何以-结尾的电话号码之前添加一个}符号,并删除该}

例如,考虑以下示例文件:

*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*

1 个答案:

答案 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
相关问题