#author("2024-05-13T13:52:57+09:00","default:nobuoki","nobuoki") #author("2024-05-13T13:54:05+09:00","default:nobuoki","nobuoki") * 大事なこと [#nc19e06b] 変換元のテキストの " (ダブルクォーテーション)、% (パーセント記号)をエスケープしておく #prism(bash){{{ # 直前に \ が付かない " と、 # 直前に % が付かない % を、 # それぞれエスケープしたのちデコードする unesc(){ perl -pe 's/(?<!\\)"/\\"/g; s/(?<!%)%/%%/g; $_ = eval q(").$_.q(")' } # 使用例 </var/log/syslog unesc | less -S }}} * デコード処理 [#ne52186f] printf 最強 printf #prism(bash){{{ 文字化けした出力 | while read -r a; do /usr/bin/printf "$a\n" ; done }}} ruby だとこんな感じで #prism(bash){{{ 文字化けした出力 | ruby -pe '$_ = eval(%q(") + $_ + %q("))' }}} てことは perl はこうだな #prism(bash){{{ 文字化けした出力 | perl -pe '$_ = eval q(").$_.q(")' }}} * 使用前 [#p8629945] #prism(bash){{{ $ grep "CRON.*CMD.*#" /var/log/syslog | tail -n3 Sep 3 16:43:01 j41 CRON[2124]: (nobuoki) CMD (ffp-shuf OBS MRT -R # \343\202\264\343\203\252\343\201\221\343\202\223\343\201\256\344\271\235\345\267\236\343\203\273\346\262\226\347\270\204\343\201\220\343\202\213\343\201\220\343\202\213\343\203\236\343\203\203\343\203\227) Sep 3 16:44:01 j41 CRON[2267]: (nobuoki) CMD (ffp-shuf OBS MRT -R # \343\202\264\343\203\252\343\201\221\343\202\223\343\201\256\344\271\235\345\267\236\343\203\273\346\262\226\347\270\204\343\201\220\343\202\213\343\201\220\343\202\213\343\203\236\343\203\203\343\203\227) Sep 3 16:45:01 j41 CRON[2456]: (nobuoki) CMD (ffp-shuf OBS MRT -R # \343\202\264\343\203\252\343\201\221\343\202\223\343\201\256\344\271\235\345\267\236\343\203\273\346\262\226\347\270\204\343\201\220\343\202\213\343\201\220\343\202\213\343\203\236\343\203\203\343\203\227) }}} * 使用後 [#c272e058] #prism(bash){{{ $ grep "CRON.*CMD.*#" /var/log/syslog | tail -n3 | ruby -pe '$_ = eval(%q(") + $_ + %q("))' Sep 3 17:42:01 j41 CRON[15744]: (nobuoki) CMD (ffp-shuf -W # 短時間シャッフル) Sep 3 17:45:01 j41 CRON[16373]: (nobuoki) CMD (ffp-shuf -W # 短時間シャッフル) Sep 3 17:48:01 j41 CRON[16995]: (nobuoki) CMD (ffp-shuf -W # 短時間シャッフル) }}} * 参考 [#pcbfda55] - [[エスケープされた日本語文字列を読みたい - Qiita>https://qiita.com/kumazo/items/39500f259500a424800b]]