在我的项目中,有一个我无法修改的现有功能:
gawk -v n=$OCCURENCE "/$OLD/$EXTRA{gsub(\"$OLD\",\"$NEW\")}1" $FILE_TO_AWK
在我的情况下,$ occurence和$ extra,它给出了:
gawk -v n=- "/$OLD/{gsub(\"$OLD\",\"$NEW\")}1" $FILE_TO_AWK
现在这是我正在努力的部分, 我尝试用另一种模式替换这种模式:ReturnCode = \“200 \”($ old)。 我一直在尝试这么多东西,但由于反斜杠和双引号,我一直在失败。
如果我有:
[12/12/2014 12/34] 123 /url/test.gsp ReturnCode=\"500\" 12234
我想有这个:
[12/12/2014 12/34] 123 /url/test.gsp 500 12234
我尝试过这样的事情:
gawk -v n=- "/ReturnCode=\\\"500\\\"/{gsub(\"ReturnCode=\\\"500\\\"\",\"500\")}1" fichier.txt
它不起作用
使用八进制代码042用于双引号但不反斜杠...我没有想法所以如果你能帮助我,我会感激不尽 谢谢!
答案 0 :(得分:0)
当事情变得棘手时,我喜欢在我的AWK脚本周围使用单引号并将值作为变量-v OLD="$OLD" -vNEW="$NEW"
传递,然后通过在AWK代码中打印出来更容易调试。
但实际上我认为“sed”可能是一个更好的工具,使用capture-expression来保存返回代码:
MATCH='url\/test'
OLD='ReturnCode=\\\"\([0-9]*\)\\\"'
NEW='\1'
sed -e "/$MATCH/ { s@$OLD@$NEW@g }" $FILE