/ / Perl、対応するchr文字でヘキサテキストを置換する - 正規表現、perl、chr

Perl、対応するchr-ed文字でヘキサテキストを置換する - regex、perl、chr

エンコードされた文字が混在したテキストでできた長い行を含むファイルがあります。

%255D%252C%2522actualPage%2522%253A1%252C%2522rowPerPage%2522%253A50%257D%255D

各エンコーダー文字は %25xx どこで xx ASCII文字の16進値です(例: %2540 = @

私は次のことを試したが成功しなかった

perl -pe "s/%25([0-9A-F](0-9A-F])/x$1/" myfile.txt
perl -pe "s/%25([0-9A-F](0-9A-F])/chr($1)/" myfile.txt

あなたは私のために何か手がかりを持っていますか?

TIA、ペイル

回答:

回答№1は0
perl -pe "s/%25([0-9A-F][0-9A-F])/chr hex $1/ge" myfile.txt

出力

],"actualPage":1,"rowPerPage":50}]

回答№2の場合は3

おそらくあなたが欲しいのは URI::Encode。これには正規表現よりもモジュールを使うほうが良いでしょう。

perl -MURI::Encode -nle"$u=URI::Encode->new(); print $u->decode($u->decode($_));"

入力文字列に対する出力は次のとおりです。

],"actualPage":1,"rowPerPage":50}]

お気づきのとおり、文字列は2回エンコードされていたため、2回デコードする必要がありました。%25 明らかにパーセント記号です %)中間出力は

%5D%2C%22actualPage%22%3A1%2C%22rowPerPage%22%3A50%7D%5D

答え№3の2
perl -MURI::Escape -ne"print uri_unescape(uri_unescape($_))"