shell中sed问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell中sed问题相关的知识,希望对你有一定的参考价值。

文件AAA.txt 中有字符
JOB_NAME,我想将其用一个变量替代然后保存到文件BBB.txt中,写法如下下
sed 's/JOB_NAME/XXX_$TABLE_SCHEMA_$TABLE_NAME/' /opt/dsjob/AAA.txt>>BBB.txt
但是没有被替换成变量的值,而是将
JOB_NAME直接替换成
XXX_$TABLE_SCHEMA_$TABLE_NAME这一串字符了,那位朋友帮忙看看,如何将一个变量替换进去的。谢谢了!

不知道你是神马逻辑,变量都是赋值,那有你这么替换的。按照你的思路。

应该是往脚本里添加一个JOB_NAME变量的值,如果BBB.txt含有JOB_NAME这个变量
你可以直接匹配JOB_NAME修改后边的值。
如果BBB.txt中不含有JOB_NAME
你还不如直接在开头第二行追加一条赋值语句。
JOB_NAME="XXX_$TABLE_SCHEMA_$TABLE_NAME"

sed -i '/\#\!\/bin\/bash/a\JOB_NAME="XXX_$TABLE_SCHEMA_$TABLE_NAME"' BBB.txt
参考技术A shell中,单引号中是不解释变量的,双引号可以解释变量
但双引号有可能对sed的脚本产生一些影响,需要测试一下追问

嗯,双引号才行的,请问不知道会产生什么影响的!

追答

我曾经遇到过,sed单引号能工作,而双引号不工作的情况
当时没有仔细分析,可能和反斜杠的个数什么的有关系

如果你这里工作正常就没问题。

本回答被提问者采纳

以上是关于shell中sed问题的主要内容,如果未能解决你的问题,请参考以下文章

linux shell sed命令的问题!

shell sed 问题

如何使用 sed 在 shell 脚本中添加单引号

如何使用 shell(awk、sed 等)删除文件中的前两列

使用 nix-shell 或 nix shell 在 Linux 64 上运行 MacOS sed

sed修炼系列:sed中的疑难杂症