我想用变量替换值。由于sed中使用的单引号,以下内容不起作用。
#!/bin/sh
set myvarM='pqr'
sed 's/:P03:M15/:P02:M1$myvarM/' mychange.txt > new_mychange.txt
我可以更改sed命令还是应该使用其他命令?
答案 0 :(得分:2)
#!/bin/sh
myvarM='pqr'
sed "s/:P03:M15/:P02:M1$myvarM/" mychange.txt > new_mychange.txt
顺便提一下,要进行原位替换(即不创建新文件,但改变原始文件),请执行以下操作:
sed -i '' "s/:P03:M15/:P02:M1$myvarM/" mychange.txt
这表示“使用空格作为增量后缀” - 即写出与输入相同的文件名
答案 1 :(得分:2)
awk -v val="$myvarM" '{sub(/:P03:M15/, ":P02:M1" val); print}' filename
请注意,在bourne-type shell(“/ bin / sh”)中,set
命令设置位置参数。您的第一行将$1
设置为值myvarM='pqr'
- myvarM变量仍然未设置。