$ cat hoge.txt | tr arg1 arg2
でhoge.txt内の文字列でarg1にマッチした文字をarg2に置換する。
文字ってとこがミソで、文字列置換ではない。
ただ複数文字指定はできる。
tr 'ab' 'cd'
とすれば、
a -> c
b -> d
に置換される。
並び順に従う感じ。
arg1の文字数 > arg2の文字数のときは
tr 'abc' 'de' -> tr 'abc' 'dee'
っていう扱い。
arg1の文字数 < arg2の文字数のときは
tr 'ab' 'cde' -> tr 'ab' 'cd'
って扱い。
使いそうなオプションは
-d : arg1にマッチしたものを削除。arg2に空文字的な。
-c : arg1にマッチしなかったら置換。使いどころ限られるな。
-s : 置換結果で連続した文字は1字にする。スペースとかタブとか。
これ単体で使うってよか、他のテキストフィルタに渡したり渡されたりして使うことが多い感じ。
11/10追記------------------
文字クラスってのを使うと簡単に複雑なマッチングができる。
例えば
$ tr "[:upper:]" "[:lower:]"
ってやると、[A-Z]を[a-z]に置換できる。
使いそうなとこだと、
[:alnum:] => [0-9a-zA-Z]
[:alpha:] => [a-zA-Z]
[:digit:] => [0-9]
[:upper:] => [A-Z]
[:lower:] => [a-z]
[:blank:] => [ ¥t]
[:cntrl:] => 制御文字
[:cntrl:]結構重宝しそうだな。
でhoge.txt内の文字列でarg1にマッチした文字をarg2に置換する。
文字ってとこがミソで、文字列置換ではない。
ただ複数文字指定はできる。
tr 'ab' 'cd'
とすれば、
a -> c
b -> d
に置換される。
並び順に従う感じ。
arg1の文字数 > arg2の文字数のときは
tr 'abc' 'de' -> tr 'abc' 'dee'
っていう扱い。
arg1の文字数 < arg2の文字数のときは
tr 'ab' 'cde' -> tr 'ab' 'cd'
って扱い。
使いそうなオプションは
-d : arg1にマッチしたものを削除。arg2に空文字的な。
-c : arg1にマッチしなかったら置換。使いどころ限られるな。
-s : 置換結果で連続した文字は1字にする。スペースとかタブとか。
これ単体で使うってよか、他のテキストフィルタに渡したり渡されたりして使うことが多い感じ。
11/10追記------------------
文字クラスってのを使うと簡単に複雑なマッチングができる。
例えば
$ tr "[:upper:]" "[:lower:]"
ってやると、[A-Z]を[a-z]に置換できる。
使いそうなとこだと、
[:alnum:] => [0-9a-zA-Z]
[:alpha:] => [a-zA-Z]
[:digit:] => [0-9]
[:upper:] => [A-Z]
[:lower:] => [a-z]
[:blank:] => [ ¥t]
[:cntrl:] => 制御文字
[:cntrl:]結構重宝しそうだな。