如何根据字符串匹配搜索特定行并将其替换为另一行。 下面是我需要使用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'来区分要编辑的行的那个。
我说这可以通过Regualar表达来实现..但我无法做到。对语法的任何帮助都会非常有用。
感谢。
千斤顶
答案 0 :(得分:1)
如果您需要替换此链接的所有出现,请执行
sed 's_"https://teststore.xxx.com/store/downpanel.css"_"https://testsstore.xxx.com/store/downpanel.css"_g' old_file > new_file
如果您确实需要匹配您显示的整个部分,请输入sed
命令。要注意换行,如果遇到中间的某个地方,它们会破坏比赛。
这是sed
的{{3}}。或者只需在Linux上输入man sed
。
答案 1 :(得分: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
的修改版本写入stdout。要进行更改,请将-i
开关添加到sed
。