使用sed替换与导出变量匹配的模式

时间:2019-03-19 00:22:07

标签: linux bash shell unix sed

如何使用sed变量将匹配的模式替换为EXPORT变量?还是有一种方法可以在调用sed文件时访问shell脚本变量?

shell_cript.sh

for i in ./data/*.sav;
do
    read_input (){
        read number_one number_two
        read date1 inventory
        read price
    } < $i
    read_input
    export number_one
    export i
    export number_two
    export inventory
    export price
    sed -f test.sed $2
done

test.sed

s/Filename/$i/g
s/1stplace/$number_one/g
s/2ndplace/$number_two/g
s/\$\$\$\$/$price/g

file.sav

Jonathan Lee
12/12/2019 2
1000

1 个答案:

答案 0 :(得分:0)

如果将所有sed命令放在sed脚本文件中,将无法将变量传递给它。

您需要做的是在命令行级别传递所有sed命令,并使用双引号"来使bash / shell解释$并进行适当的变量替换。您不需要export变量,因为在创建sed子过程之前,shell将完成变量替换。

sed 's/Filename/'"$i"'/g;s/1stplace/number_one/g;s/2ndplace/number_two/g;s/\$\$\$\$/price/g'