Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

trコマンドで不要文字を抹殺したり小文字を大文字に置換したり。

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:そもそも元ネタ自体がそういう用途で用いられている