如何根据另一个文件中的值替换文件中的字符串。
示例,2个文件 - 输入,输出
输入:
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'读取值,并在文件'output'中将所有'12345'替换为'1'。 提前感谢您的帮助
答案 0 :(得分:4)
怎么样:
sed `sed 's|\(.*\) \(.*\)|s/\1/\2/|' input` output
答案 1 :(得分:2)
无需让AWK反复拨打sed
。让AWK将第一个文件读入数组:
awk -F "[ )]" 'NR == FNR {a[$1] = $2; next} {sub($(NF-1), a[$(NF-1)]); print}' key-value-file main-file
答案 2 :(得分:0)
cat input | while read src rep
do
sed -i "s, $src), $rep),g" output
done
请记住备份“输出”。
编辑:另请注意,如果“输入”包含特殊到sed的字符,则会失败。对于普通字母/数字,它可以正常工作。
答案 3 :(得分:0)
cat input | awk '{ cmd = "sed s/," $1 ",/," $2 ",/g" " output > output.new"; print system(cmd) }'