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问题的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 shell(awk、sed 等)删除文件中的前两列