Regex sed删除'';仅在字符串的一部分
我可能缺少一些基本的东西。我想删除以下字符串中与之间的所有“.”。我应该在sed中使用什么正则表达式Regex sed删除'';仅在字符串的一部分,regex,replace,sed,Regex,Replace,Sed,我可能缺少一些基本的东西。我想删除以下字符串中与之间的所有“.”。我应该在sed中使用什么正则表达式 **&v15.0&** something.anything abc.deg **&v15.03.15&** something.anything abc.deg **&v15.01.16.01&** something.anything abc.deg **&v15.000.155.123.125&** something.any
**&v15.0&** something.anything abc.deg
**&v15.03.15&** something.anything abc.deg
**&v15.01.16.01&** something.anything abc.deg
**&v15.000.155.123.125&** something.anything abc.deg
修改为:
**&v150&** something.anything abc.deg
**&v150315&** something.anything abc.deg
**&v15011601&** something.anything abc.deg
**&v15000155123125&** something.anything abc.deg
可以有任意数量的带有&’的“.”,我不希望修改&’之外的“.”
谢谢您的帮助。试试这个oneliner:
awk -F'&' '{gsub(/\./,"",$2)}1' file
如果您真的想使用sed,并且您有Gnu sed,您可以:
sed -r 's/([^&]*&)([^&]*)(&.*)/echo "\1"$(echo "\2"\|sed "s#\\.##g")"\3"/ge' file
测试sed线路:
kent$ echo "**&v15.0&** something.anything abc.deg
**&v15.03.15&** something.anything abc.deg
**&v15.01.16.01&** something.anything abc.deg
**&v15.000.155.123.125&** something.anything abc.deg"|sed -r 's/([^&]*&)([^&]*)(&.*)/echo "\1"$(echo "\2"\|sed "s#\\.##g")"\3"/ge'
**&v150&** something.anything abc.deg
**&v150315&** something.anything abc.deg
**&v15011601&** something.anything abc.deg
**&v15000155123125&** something.anything abc.deg
试试这一行:
awk -F'&' '{gsub(/\./,"",$2)}1' file
如果您真的想使用sed,并且您有Gnu sed,您可以:
sed -r 's/([^&]*&)([^&]*)(&.*)/echo "\1"$(echo "\2"\|sed "s#\\.##g")"\3"/ge' file
测试sed线路:
kent$ echo "**&v15.0&** something.anything abc.deg
**&v15.03.15&** something.anything abc.deg
**&v15.01.16.01&** something.anything abc.deg
**&v15.000.155.123.125&** something.anything abc.deg"|sed -r 's/([^&]*&)([^&]*)(&.*)/echo "\1"$(echo "\2"\|sed "s#\\.##g")"\3"/ge'
**&v150&** something.anything abc.deg
**&v150315&** something.anything abc.deg
**&v15011601&** something.anything abc.deg
**&v15000155123125&** something.anything abc.deg
使用常规的
sed
(也是非GNU)尝试:
使用常规的
sed
(也是非GNU)尝试:
这正是我需要的。我最好用awk来做这个。谢谢。@SkypeMeSM我添加了一个sed(gnu sed)解决方案,您可以选择一个您喜欢的解决方案。虽然您接受了我的答案,但我要指出的是,我的答案中的两个解决方案只有在字符串只有一部分时才有效。如果您的真实文本有更多的
&…&
部分,则需要更改脚本。这正是我所需要的。我最好用awk来做这个。谢谢。@SkypeMeSM我添加了一个sed(gnu sed)解决方案,您可以选择一个您喜欢的解决方案。虽然您接受了我的答案,但我要指出的是,我的答案中的两个解决方案只有在字符串只有一部分时才有效。如果您的真实文本包含更多的&…&
部分,则需要更改脚本。