#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]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS