从变量中分配.sql文件中的值

时间:2013-06-20 12:51:34

标签: unix

我有一个文件done.txt,其中包含值“34523”。我想替换每一个“?”使用“34523”在CreateView.sql文件中出现,并将输出写入CreateViewFinal.sql文件。但它不是在做预期的工作,而是直接分配$ value  在CreateViewFinal.sql文件中。在这件事上的任何帮助都会有很大的帮助 找到脚本:

sed '14! d'result.txt>> done.txt value = $(> CreateViewFinal.sql echo“运行runView.sh”

提前致谢!!

2 个答案:

答案 0 :(得分:0)

由于您还未指定使用哪种工具来实现目标,因此这是一个简单的Perl单线程解决方案:

perl -e "while (<>) {s/\\?/34523/g; print;}"

作为参数,给出一个文件名,并将输出重定向到某个地方。

答案 1 :(得分:0)

示例:

jon@jontest:~$ echo "34523" > done.txt # write value to file
jon@jontest:~$ val=`cat done.txt`      # read into a variable $val
jon@jontest:~$ #create infile.sql with some sample data
jon@jontest:~$ printf "aaaaa\nbbbbb?\n?ccccc\ndd?ddd\ne?ee?ee\n" > infile.sql
jon@jontest:~$ sed "s/\?/$val/g" infile.sql > outfile.sql
jon@jontest:~$ cat infile.sql
aaaaa
bbbbb?
?ccccc
dd?ddd
e?ee?ee
jon@jontest:~$ cat outfile.sql
aaaaa
bbbbb34523
34523ccccc
dd34523ddd
e34523ee34523ee

给予sed的s表达式末尾的g表示 global ,并确保为每个执行替换的行替换所有出现的?

你的参数:

var=`cat done.txt`; sed "s/\?/$var/g" CreateView.sql > CreateViewFinal.sql