0
我想用变量替换该值。以下因sed中使用的单引号不起作用。用变量替换文本
#!/bin/sh
set myvarM='pqr'
sed 's/:P03:M15/:P02:M1$myvarM/' mychange.txt > new_mychange.txt
我可以改变sed命令还是应该使用别的东西?
我想用变量替换该值。以下因sed中使用的单引号不起作用。用变量替换文本
#!/bin/sh
set myvarM='pqr'
sed 's/:P03:M15/:P02:M1$myvarM/' mychange.txt > new_mychange.txt
我可以改变sed命令还是应该使用别的东西?
#!/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
这是说“使用空白作为增量后缀” - 即写出相同的文件名作为输入
awk -v val="$myvarM" '{sub(/:P03:M15/, ":P02:M1" val); print}' filename
注意,在Bourne类型的外壳(‘/ bin/sh的’)的set
命令设置位置参数。您的第一行将$1
设置为值myvarM='pqr'
- myvarM变量将继续未设置。
改用'''代替,将允许变量扩展 –
谢谢,第二个问题是set! – shantanuo