1

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

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

各エンコーダ文字は%25xxxxascii char の 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

私の手がかりはありますか?

ティア、ペイレ

4

3 に答える 3

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
于 2013-10-16T12:35:51.730 に答える