Bye Bye Moore

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

trコマンドの落ち穂拾い

以前書いたtrコマンドで不要文字を抹殺したり小文字を大文字に置換したり。 - Bye Bye Mooreの続きです

複数行の改行を一個だけに絞る

$ printf "hoge\nhuga\n\npiyo\n"
hoge
huga

piyo

複数の改行が入るとアレですよね。
sedで置換するのも良いですが、
ここはtrの-sオプションを使いましょう。

$ printf "hoge\nhuga\n\npiyo\n" | tr -s '\n'
hoge
huga
piyo

まとめ置換が抜けるとどうなるのか

"tr a-z A-Z"は定番ですね。
これが仮に文字数が不足していた場合、
第一引数ならば以降無視、

$ echo {a..z} | tr a-f A-Z
A B C D E F g h i j k l m n o p q r s t u v w x y z

第二引数なら、最後の文字で置換されます

$ echo {a..z} | tr a-z A-F
A B C D E F F F F F F F F F F F F F F F F F F F F F

$ echo {a..z} | tr a-z '*'
* * * * * * * * * * * * * * * * * * * * * * * * * *

括弧系を纏めて置換

a-z A-Zが対応しているという事は、他の記号でも似た事が行けるわけです。
たとえば、括弧の種類を変える...とか。

$ echo [{a..z}] 
[a] [b] [c] [d] [e] [f] [g] [h] [i] [j] [k] [l] [m] [n] [o] [p] [q] [r] [s] [t] [u] [v] [w] [x] [y] [z]

$ echo [{a..z}] | tr '[]' '<>'
<a> <b> <c> <d> <e> <f> <g> <h> <i> <j> <k> <l> <m> <n> <o> <p> <q> <r> <s> <t> <u> <v> <w> <x> <y> <z>