0

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

sed '14 !d' result.txt >> done.txt value=$(> CreateViewFinal.sql echo "run the runView.sh"

提前致谢!!

4

2 回答 2

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的gs 表达式末尾的意思是全局的,它将确保您替换所有出现的?sed 执行替换的每一行。

与您的参数一致:

var=`cat done.txt`; sed "s/\?/$var/g" CreateView.sql > CreateViewFinal.sql
于 2013-06-20T13:28:31.777 回答
0

由于您还没有指定使用哪种工具来实现您的目标,这里有一个简单的 Perl 单线解决方案:

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

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

于 2013-06-20T12:54:52.893 回答