我有一组.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 *
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。