0

如何根据字符串匹配搜索特定行并将其替换为另一个字符串。下面是我需要使用 bash 脚本修改的 html strong 示例。

< 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">

即带有teststore 的teststore。只是想添加 's' 。

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

有人说这可以通过正则表达式来实现..但我无法做到。任何有关语法的帮助都会非常有用。

谢谢。
杰克

4

2 回答 2

1

如果您需要替换所有出现的此链接,只需执行

sed 's_"https://teststore.xxx.com/store/downpanel.css"_"https://testsstore.xxx.com/store/downpanel.css"_g' old_file > new_file

如果你真的需要匹配你显示的整个部分,那么输入sed命令。当心换行符,如果在中间的某个地方遇到它们会破坏比赛。

这是. _ sed或者只是man sed在 Linux 上输入。

于 2012-04-09T11:07:37.980 回答
0

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

sed -e '/unique pattern/s/string or pattern/replacement string/' file

初始/unique pattern/部分将替换限制为给定模式的行。对于像您这样的简单情况,只需对包含 的所有行执行替换就足够了teststore,因此可以省略唯一模式部分并且替换变为全局:

sed -e 's/teststore/testsstore/' file

如果这对您来说是个问题并替换了不应该的东西,您可以使用原始表单,可能像这样:

sed -e '/link.*teststore/s/teststore/testsstore/' file

帮助限制影响。

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

于 2012-04-09T11:07:42.797 回答