您尚未登录。

#1 2022-11-14 11:12:38

驿窗
驿窗
所在地: 基础开源研究
注册时间: 2016-06-03
帖子: 927
个人网站

(已解决)文件部分内容批量替换

目录中有多个子目录,每个子目录中有多个svg文件。
svg文件内容中,很多有固定格式的地方需要添加一个固定的字符串

 ;fill:#009900

比如下面这个固定格式:

 opacity:1

添加;fill:#009900
变成

 opacity:1;fill:#009900

这些固定的格式除了opacity:1以外,还有
opacity:0.5
opacity:0.6
opacity:0.35
都需要在后面添加;fill:#009900

有啥方法能快速完成这个操作?
我试了下sed,没搞明白通配符怎么回事。

最近编辑记录 驿窗 (2022-11-15 13:35:47)


开源/Linux大众化,从驿窗开始~

离线

#2 2022-11-15 13:01:19

tanloong
会员
注册时间: 2021-08-15
帖子: 28

Re: (已解决)文件部分内容批量替换

1. 我没接触过svg文件,但用下面的命令可以对单个txt文件实现你说的效果:

sed -E -i 's/(opacity:(1|0\.5|0\.6|0\.35))/\1;fill:#009900/g' sample.txt

执行完之后,sample.txt 会从:

opacity:1
opacity:0.5
opacity:0.6
opacity:0.35

变成:

opacity:1;fill:#009900
opacity:0.5;fill:#009900
opacity:0.6;fill:#009900
opacity:0.35;fill:#009900

2. 如果 svg 文件可以像 txt 文件一样被 sed 修改的话,在项目的顶层目录下执行下面的命令应该可以批量添加“;fill:#009900”:

find . -name '*.svg' -exec sed -E -i 's/(opacity:(1|0\.5|0\.6|0\.35))/\1;fill:#009900/g' {} \;

最近编辑记录 tanloong (2022-11-15 13:11:20)

离线

#3 2022-11-15 13:33:22

驿窗
驿窗
所在地: 基础开源研究
注册时间: 2016-06-03
帖子: 927
个人网站

Re: (已解决)文件部分内容批量替换

tanloong 说:

2. 如果 svg 文件可以像 txt 文件一样被 sed 修改的话,在项目的顶层目录下执行下面的命令应该可以批量添加“;fill:#009900”:

find . -name '*.svg' -exec sed -E -i 's/(opacity:(1|0\.5|0\.6|0\.35))/\1;fill:#009900/g' {} \;

我试了一下,这个命令有效。我记小本上,以后还会用到~


开源/Linux大众化,从驿窗开始~

离线

页脚