加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 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 *

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读