我有一个文件done.txt,其中包含值“34523”。我想替换每一个“?”使用“34523”在CreateView.sql文件中出现,并将输出写入CreateViewFinal.sql文件。但它不是在做预期的工作,而是直接分配$ value 在CreateViewFinal.sql文件中。在这件事上的任何帮助都会有很大的帮助 找到脚本:
sed '14! d'result.txt>> done.txt value = $(> CreateViewFinal.sql echo“运行runView.sh”提前致谢!!
答案 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