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

标签 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

测试.sed

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

文件.sav

Jonathan Lee
12/12/2019 2
1000

最佳答案

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

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

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

关于linux - 使用 sed 替换与导出变量匹配的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55231939/

相关文章:

linux - make 命令如何调用其他子 shell 来执行配方

linux - 从 linux 命令行将 PDF 转换为 GRAYSCALE 格式以供打印机使用

bash - 如何在错误时停止Powershell脚本?

linux - 为什么我的 Linux 管道卡住了?

html - 将文本文件转换为 html 输出,以便可以以表格格式打印数据

mysql - 将日期从文件传递到 mysql 的 Shell 脚本

python - 在 python 中调用外部程序,观察特定文本的输出然后采取行动

linux - 出现提示时 Bash 脚本类型输入

bash - 重定向 ${var :? } 构造中的标准错误

java - 使用 & (bg) 运行时,Linux csh 脚本将暂停(tty 输出)