正则表达式 – Bash脚本 – 批量修改文件sed正则表达式
发布时间:2020-12-14 05:59:40 所属栏目:百科 来源:网络整理
导读:我有一组.csv文件(全部在一个文件夹中),格式如下所示: 170;151;104;137;190;125;170;108195;192;164;195;171;121;133;104... (a lot more rows) ... 事情是我搞砸了一下,看起来应该是这样的 170;151;104.137;190.125;170;108195;192;164.195;171.121;133;10
我有一组.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 * (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |