Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

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>