正则表达式 – Bash脚本 – 批量修改文件sed正则表达式

前端之家收集整理的这篇文章主要介绍了正则表达式 – Bash脚本 – 批量修改文件sed正则表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一组.csv文件(全部在一个文件夹中),格式如下所示:

170;151;104;137;190;125;170;108
195;192;164;195;171;121;133;104
... (a lot more rows) ...

事情是我搞砸了一下,看起来应该是这样的

170;151;104.137;190.125;170;108
195;192;164.195;171.121;133;104

如果差异太微妙而无法注意到:

我需要编写一个脚本,将每隔三和五分号更改为该文件夹中efery文件中每一行的句点.

我的研究表明,我必须在我的脚本中设计一些聪明的sed s / command.问题是我对正则表达式不是很好.从阅读教程开始,它可能会涉及/ 3和/ 5.

解决方法

这是一个非常简短的方法

sed 's/;/./3;s/;/./4' -iBAK *

它取代了第3个,然后是第5个(现在是第4个)实例;与……

我在你的样本上测试了它(保存为sample.txt):

$sed 's/;/./3;s/;/./4' <sample.txt
170;151;104.137;190.125;170;108
195;192;164.195;171.121;133;104

为了安全起见,我已将我的示例备份为< WHATEVER> .BAK.要防止这种情况,请将-iBAK更改为-i.

这个脚本可能不是完全可移植的,但我已经在Mac 10.8上使用BSD sed(不知道什么版本)和Linux与sed(gsed)4.1.4(2003)进行了测试. @JonathanLeffler指出它是截至2008年的标准POSIX sed.我也发现它并喜欢它.

高尔夫提示:如果你从bash运行命令,你可以使用大括号扩展来实现一个非常短的版本:

sed -es/\;/./{3,4} -i *

猜你在找的正则表达式相关文章