Regex 使用perl/awk或其他方法将ascii替换为匹配字符

Regex 使用perl/awk或其他方法将ascii替换为匹配字符,regex,linux,perl,awk,Regex,Linux,Perl,Awk,我有一个使用nginx和lua代码编写的访问日志。 它是url编码的,其中一些字符以\xHexCode格式写入(例如,双引号写入为\x22)。 我想运行awk或perl或其他快速脚本来替换它。您可以像这样使用gnu awk: str='\x22 \x41 written as \x22).' awk -v RS='\\\\x[0-9]+' 'RT{ORS=sprintf("%c", strtonum("0" substr(RT, 2)))} 1' <<< "$str" " A

我有一个使用nginx和lua代码编写的访问日志。 它是url编码的,其中一些字符以\xHexCode格式写入(例如,双引号写入为\x22)。
我想运行awk或perl或其他快速脚本来替换它。

您可以像这样使用
gnu awk

str='\x22 \x41 written as \x22).'

awk -v RS='\\\\x[0-9]+' 'RT{ORS=sprintf("%c", strtonum("0" substr(RT, 2)))} 1' <<< "$str"
" A written as ").
str='\x22\x41写为\x22)。'

awk-v RS='\\\\x[0-9]+''RT{ORS=sprintf(“%c”,strtonum(“0”substr(RT,2)))}1'发布示例输入和预期输出以及您迄今为止尝试的内容。谢谢。这么好的回答。