我正在寻求帮助,试图将以下日志转换为纯文本。
这是一个 URL,所以可能有 %20 = 'space' 和其他,但我尝试转换的主要位是char(1,2,3,4,5,6)文本。
下面是我尝试转换的示例。
选择%20char(45,120,49,45,81,45),char(45,120,50,45,81,45),char(45,120,51,45,81,45)
到目前为止,我在尝试添加到char(in here)转换时尝试了以下内容chr($2)
perl -pe "s/(char())/chr($2)/ge"
Run Code Online (Sandbox Code Playgroud)
所有这一切都设法删除字符,但现在我正在尝试将数字转换为文本并删除逗号和括号。
由于我对 perl 还很陌生,因此我可能对我的工作方式有所了解。
perl -pe "s/要删除的单词/将其更改为/ge 的单词"
"s/(char(这里有什么))/chr($2)/ge"
输出尝试实现的是
选择 -x1-Q-,-x2-Q-,-x3-Q-
或者
选择%20-x1-Q-,-x2-Q-,-x3-Q-
谢谢你的帮助
对于一个合理的单线来说,这里有太多事情要做。此外,脚本以后更容易调整
use warnings;
use strict;
use feature 'say';
use URI::Escape 'uri_unescape';
my $string = q{select%20}
. q{char(45,120,49,45,81,45),char(45,120,50,45,81,45),}
. q{char(45,120,51,45,81,45)};
my $new_string = uri_unescape($string); # convert %20 and such
my @parts = $new_string =~ /(.*?)(char.*)/;
$parts[1] = join ',', map { chr( (/([0-9]+)/)[0] ) } split /,/, $parts[1];
$new_string = join '', @parts;
say $new_string;
Run Code Online (Sandbox Code Playgroud)
这打印
选择 -x1-Q-,-x2-Q-,-x3-Q-
注释
模块URI::Escape用于根据 RFC 3986 转换百分比编码的字符
不确定是否有任何东西可以跟在带有char(...)s的部分之后,以及它可能是什么。如果上次char(...)调整拆分后可以有更多@parts,或澄清
在带有char(...)s的部分中,只需要数字,map 中的正则表达式使用的是什么
如果你打算使用正则表达式,你应该仔细阅读它。看
perlretut,一个教程
perlrequick,快速入门介绍
perlre,语法的完整说明
| 归档时间: |
|
| 查看次数: |
221 次 |
| 最近记录: |