gpt4 book ai didi

regex - sed mass 通过终端替换 CSS 样式

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:12 26 4
gpt4 key购买 nike

我想将 font-family: ([A-Za-z ,"]+){1}; 的所有实例替换为 font-family: Verdana使用 sed。过去,以下命令用于简单搜索和替换:

find ./ -type f -exec sed -i 's/needle/replace/' {} \;

但是,我尝试了以下正则表达式但没有成功:

find ./ -type f -exec sed -i 's/(font\-family:){1}([\"A-Za-z, ]+){1}(;){1}/font\-family: Verdana;/' {} \;

我使用的是 Red Hat Enterprise Linux Server 5.6 版。此外,第一个命令似乎只适用于任何给定文件中的第一个实例,这意味着我必须重新运行该命令,直到每个实例都被替换......我可以改进命令以适用于所有文件的所有实例吗?

最佳答案

首先,解释一下为什么您的方法不起作用。您需要转义所有括号、方括号和 +,因此以下内容应该有效:

sed -i 's/\(font\-family:\)\{1\}\(["A-Za-z, ]\+\)\{1\}\(;\)\{1\}/font-family: Verdana;/'

幸运的是,您可以添加 -r 开关来防止所有转义的需要,但您也可以大大简化当前的表达式。您不需要将每个部分都放入一个捕获组中,并且将 {1} 添加到每个组是多余的(这基本上是默认设置)。所以你可以把它减少到:

sed -ri 's/font-family:["A-Za-z, ]+;/font-family: Verdana;/g'

请注意为全局替换添加的 g 选项,因为您希望在每次出现时都使用它。

一起:

find ./ -type f -exec sed -ri 's/font-family:["A-Za-z, ]+;/font-family: Verdana;/g' {} \;

关于regex - sed mass 通过终端替换 CSS 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8540463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com