<分区>
我有一个使用 nginx 和 lua 代码编写的访问日志。 它是url编码的,一些字符写成\xHexCode格式(比如双引号写成\x22)。 我想运行 awk 或 perl 或其他快速脚本来替换它。
<分区>
我有一个使用 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 ").
它是这样工作的:
RS='\\\\x[0-9]+'
,我们为每个 \xNN
数字分隔自定义记录分隔符。 substr(RT, 2)
从 \x41
x41
strtonum("0"substr(RT, 2))
添加 0
使其成为 0x41
并返回 ascii 码 65
。printf "%c"
从 65
打印等效的 ascii 字符 A
。ORS=...
将输出记录分隔符设置为与 sprintf
的返回值相同。关于regex - 使用 perl/awk 或其他匹配字符替换 ascii,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30674277/