YAMLデータをBashスクリプトのみでパースする - Bye Bye Mooreなどで扱ったtrコマンドについて理解が深まったのでメモ。
仮に、sampledata.logとして以下のようなテキストデータがあったとします。
$ cat sampledata.log data [alpha] data [beta] data [gamma] data [delta] data [epsillon]
不要な文字を取り除く
第一引数に要らない文字を(複数可)指定すればOKです。
$ tr -d '[]' < sampledata.log data alpha data beta data gamma data delta deta epsillon
文字を置換する
sedっぽいですが、これは一文字毎に置換します。
記号だけならこっちのほうが楽かもしれません
$ tr '[]' ',' < sampledata.log data ,alpha, data ,beta, data ,gamma, data ,delta, data ,epsillon,
文字列クラスを使って小文字を大文字に
文字列クラスでUNIXストリームエディタの可視性を上げる - Bye Bye Mooreで紹介したような文字列クラスの適用も可能です。
$ tr '[:lower:]' '[:upper:]' < sampledata.log DATA [ALPHA] DATA [BETA] DATA [GAMMA] DATA [DELTA] DATA [EPSILLON]
パスワードっぽく伏せ字にする
$ tr '[:lower:][:upper:]' '*' < sampledata.log **** [*****] **** [****] **** [*****] **** [*****] **** [********]
伏せ字の代用にROT13暗号
面白い用法としては、ROT13方式に簡易暗号化する方法もあります。
$ tr '[:lower:][:upper:]' 'N-ZA-Mn-za-m]' < sampledata.log QNGN [NYCUN] QNGN [ORGN] QNGN [TNZZN] QNGN [QRYGN] QNGN [RCFVYYBA]
弱い暗号...というか隠語の類なので身内向けジョーク*1か、チラ見防止用が賢明でしょう
*1:そもそも元ネタ自体がそういう用途で用いられている