Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SED(换位)重新排列数字_Sed - Fatal编程技术网

如何使用SED(换位)重新排列数字

如何使用SED(换位)重新排列数字,sed,Sed,我有一句话: The ID number for product is 721- 971-4321.` 我想把区号换成里面的号码,就像这样:971-721-4321 以下是我所拥有的: 17s/\([654]\)-\([817]\)/\2-\1/ 所以这个数字在.txt文件的第17行。电话里还有其他事情,但我只想更改号码 每当我运行脚本时,什么都不会发生。任何关于如何解决这个问题的建议 你能试试下面的吗 sed 's/\([^0-9]*\)\([^-]*\)\([^0-9]*\)\([^-

我有一句话:

The ID number for product is 721- 971-4321.` 
我想把区号换成里面的号码,就像这样:
971-721-4321

以下是我所拥有的:

17s/\([654]\)-\([817]\)/\2-\1/
所以这个数字在.txt文件的第17行。电话里还有其他事情,但我只想更改号码


每当我运行脚本时,什么都不会发生。任何关于如何解决这个问题的建议

你能试试下面的吗

sed 's/\([^0-9]*\)\([^-]*\)\([^0-9]*\)\([^-]*\)\(.*\)/\1\4\3\2\5/' Input_file
说明:我在这里使用
sed的反向参考功能。其中,通过使用正则表达式,我创建了5个临时缓冲区,然后按重新排序访问它们,以便根据OP的请求进行输出

输出如下

The ID number for product is 971- 721-4321.
这可能适用于您(GNU-sed):

sed -E 's/([0-9]+-) ([0-9]+-)/\2 \1/' file