大事なこと

変換元のテキストの " (ダブルクォーテーション)、% (パーセント記号)をエスケープしておく

# 直前に \ が付かない " と、
# 直前に % が付かない % を、
# それぞれエスケープしたのちデコードする
unesc(){
  perl -pe 's/(?<!\\)"/\\"/g; s/(?<!%)%/%%/g; $_ = eval q(").$_.q(")'
}

# 使用例
</var/log/syslog unesc | less -S

デコード処理

printf

文字化けした出力 | while read -r a; do /usr/bin/printf "$a\n" ; done

ruby だとこんな感じで

文字化けした出力 | ruby -pe '$_ = eval(%q(") + $_ + %q("))'

てことは perl はこうだな

文字化けした出力 | perl -pe '$_ = eval q(").$_.q(")'

使用前

$ 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)

使用後

$ 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                      # 短時間シャッフル)

参考


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-05-13 (月) 13:54:05