Bash 如何基于文本而不是行号搜索和替换HTML文件中的标记文本

Bash 如何基于文本而不是行号搜索和替换HTML文件中的标记文本,bash,Bash,如何基于字符串匹配搜索特定行并用另一个sting替换它。 下面是一个html strong的示例,我需要使用bash脚本对其进行修改 < link type="text/css" rel="stylesheet" href="https://teststore.xxx.com/store/downpanel.css"> i、 使用testsstore创建teststore。只是想加上“s” 我想我需要匹配所有的字符串。因为downpanel.css是区分要用“s”编辑的行的 据

如何基于字符串匹配搜索特定行并用另一个sting替换它。 下面是一个html strong的示例,我需要使用bash脚本对其进行修改

< link type="text/css" rel="stylesheet" href="https://teststore.xxx.com/store/downpanel.css">

改为:

< link type="text/css" rel="stylesheet" href="https://testsstore.xxx.com/store/downpanel.css">

i、 使用testsstore创建teststore。只是想加上“s”

我想我需要匹配所有的字符串。因为downpanel.css是区分要用“s”编辑的行的

据说这可以通过正规的表达来实现。。但我没能做到。语法方面的任何帮助都将非常有用

谢谢。

jack

如果您需要替换此链接的所有出现项,只需执行以下操作

sed 's_"https://teststore.xxx.com/store/downpanel.css"_"https://testsstore.xxx.com/store/downpanel.css"_g' old_file > new_file
如果您确实需要匹配显示的整个零件,请输入
sed
命令。当心断线,如果在中间某个地方,他们会破坏比赛。


下面是一个用于
sed
的示例。或者在Linux上键入
man sed

要解决此类问题,您通常使用
sed
结构,如下所示:

sed -e '/unique pattern/s/string or pattern/replacement string/' file
sed -e '/link.*teststore/s/teststore/testsstore/' file
初始的
/unique pattern/
部分将替换约束为模式给定的行。对于像您这样的简单情况,只需在包含
teststore
的所有行上执行替换就足够了,因此可以省略唯一模式部分,并且替换成为全局的:

sed -e 's/teststore/testsstore/' file
如果这对您来说是一个问题,并且替换了不应该替换的内容,您可以使用原始表单,可能如下所示:

sed -e '/unique pattern/s/string or pattern/replacement string/' file
sed -e '/link.*teststore/s/teststore/testsstore/' file
以帮助限制影响


请注意,这只会将
文件的修改版本写入标准输出。要进行适当的更改,请将
-i
开关添加到
sed

Ob:不要使用正则表达式匹配HTML。谢谢大家。。“塞德的”确实像我尝试的那样奏效了。@Johnbritto:别忘了接受对你有帮助的答案。看到了吗