如何replace文件中的string基于来自另一个文件的值? (里面的例子)

如何replace文件中的string,基于来自另一个文件的值。

例如,2个文件 – input,输出

input:

12345 1 

输出:

 (1,'a lot of text', 'some other info',0,null, 12345), (2,'a lot of text', 'some other info',0,null, 12345), (3,'a lot of text', 'some other info',0,null, 12345), (4,'a lot of text', 'some other info',0,null, 12345), (5,'a lot of text', 'some other info',0,null, 12345); 

需要完成:

从文件“input”中读取值,并在文件“输出”中将全部“12345”replace为“1”。 提前感谢您的帮助

怎么样:

 sed `sed 's|\(.*\) \(.*\)|s/\1/\2/|' input` output 

没有必要有AWK重复呼叫sed 。 只要AWK将第一个文件读入数组中:

 awk -F "[ )]" 'NR == FNR {a[$1] = $2; next} {sub($(NF-1), a[$(NF-1)]); print}' key-value-file main-file 
 cat input | while read src rep do sed -i "s, $src), $rep),g" output done 

记得做一个“输出”的备份。

编辑:另外请注意,如果“输入”包含对sed 特殊的字符,这将失败。 对于简单的字母/数字,它会正常工作。

好的,我遇到了这个解决方案:

 cat input | awk '{ cmd = "sed s/," $1 ",/," $2 ",/g" " output > output.new"; print system(cmd) }'