用变量替换文本

时间:2011-07-08 11:54:47

标签: sed awk grep

我想用变量替换值。由于sed中使用的单引号,以下内容不起作用。

#!/bin/sh
set myvarM='pqr'
sed 's/:P03:M15/:P02:M1$myvarM/' mychange.txt > new_mychange.txt

我可以更改sed命令还是应该使用其他命令?

2 个答案:

答案 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变量仍然未设置。