尝试查找单个单词并将其替换为文件内容。适用于MacOS,但不适用于linux。
这是在linux下失败的awk:
awk -v var="${blah}" '{sub(/%WORD%/,var)}1' file.xml
(file.xml是122行,4.7K)
错误是:
awk: program limit exceeded: replacement pieces size=255
MacOS下的相同file.xml,使用稍微不同的awk工作正常:
awk -v var="${blah//$'\n'/\\n}" '{sub(/%WORD%/,var)1}'
重新编译awk不是一个选项。这是32位的Ubuntu 12.04。
答案 0 :(得分:0)
你可以使用sed
FILE=`cat Filename`
sed "s/WORD/${FILE}/g" file.xml > newfile.xml
答案 1 :(得分:0)
事实证明,好的旧'替换'在这个用例中表现得很糟糕 - 谁会想到?
replace -v "%WORD%" "$blah" -- file.xml
答案 2 :(得分:0)
使用Gnu Awk第4版和readfile
扩展程序:
gawk -f a.awk file.xml
其中a.awk
是:
@load "readfile"
BEGIN{
var = readfile("blah")
if (var == "" && ERRNO != "")
print("problem reading file", ERRNO) > "/dev/stderr"
}
{
sub(/%WORD%/,var)
print
}