30テキスト処理(文字の置換)

実験用ファイルは http://www17.ocn.ne.jp/~mit/WebUp/  から落とせます

または

http://www43.tok2.com/home/moonbase/WebUp/


scp guest@192.168.112.7:~/text/inFile.txt inFile.txt でコピーできます



基本形 文字を置換する(文字列の置換ではない)

tr [オプション] 置換前の文字 置換後の文字

-d   連続する文字を削除する          [-d  削除する文字]

-s   連続する文字を一つにまとめる    [-s まとめる文字]



引数にファイルのパスを指定できない。入力は標準入力、出力は標準出力となる。

よって、ファイルからデータを読み込んで別のファイルに書き出すには必ずリダイレクションもしくはパイプが必要となる。

結果として、複数のコマンドを組み合わせて使用することになるため、trのようなコマンドをフィルタコマンドと呼ぶ。




実験:

inFile.txtの区切り文字「,」を「:」に変更してoutFile.txtに書き出す

リダイレクションのみ使用



パイプとリダイレクションを使用




【注意】

1.置換はあくまでも文字単位に行われる。

2.置換前の文字と置換後の文字は複数指定できる。

3.置換は記述した文字の順に行われる。

4.置換後の文字の数が少ない場合には最後の文字に置換される。



例えば「スペース」を:に「カンマ」も:に置き換えたいときの設定は..........


[guest@icv99 ~]$ cat mem.txt
001, Yoshida Shigeru: yoshida@naikaku.jp
002,  Nakatani Mikio,     mikio3@mri.jsp.jp
003:Sakaki Kazushige,sakaki@hanasaku.com
[guest@icv99 ~]$
[guest@icv99 ~]$ cat mem.txt | tr " ," ":" ←←←←←←ここ
001::Yoshida:Shigeru::yoshida@naikaku.jp
002:::Nakatani:Mikio::::::mikio3@mri.jsp.jp
003:Sakaki:Kazushige:sakaki@hanasaku.com::
[guest@icv99 ~]$


” ,” という文字列が ”:” に変更されているわけではない!





文字の削除や圧縮も行える。

mem.txtの「,」を削除する



mem.txtの連続する「スペース」を一つにまとめる



mem.txtの「,」と「スペース」を「:」に置換する(これは先ほどやりました)



以下のようにオプション指定すると一気に整形が完了する(連続する「:」を一つにする)



この場合まず置換が行われそのあとで連続する文字をひとつにまとめるという処理が行われる。