使用包含转义字符的变量替换文件中的多行

时间:2016-08-02 06:00:08

标签: shell sed

Shell脚本新手。 我有档案。样本如

sample.txt的

some text1
txt2
element : /home/user/somelocation text1
loc : /home/user/somelocation text2

我正在尝试编写shell脚本,用/home/user/

替换包含element : /home/testuser/somelocation text的行

搜索文本和替换测试都是可变的,无法从用户那里获得。

#!/bin/csh

# Sample searchStr="/home/user/"
set searchStr=$1 

# Sample rplcStr="element : /home/testuser/somelocation text"
set rplcStr=$2
sed -i '/$searchStr/c\$rplcStr' sample.txt

但这不起作用。

预期产出

some text1
txt2
element : /home/testuser/somelocation text

如何更换?

1 个答案:

答案 0 :(得分:1)

您可以试试sed

sed "/^element :/s|^.*$search.*$|$replace|g" file

<强>测试

$ search="/home/user/"
$ replace="element : /home/testuser/somelocation text"
$ sed "/^element :/s|^.*$search.*$|$replace|g" file
some text1
txt2
element : /home/testuser/somelocation text
loc : /home/user/somelocation text2