たこさんのメモ書き

Linuxの設定/構築のメモを残すのが主体です。
わからないこと、あれこれたくさん。

テキストの操作 並べ替えと抽出

2009-08-07 09:37:22 | サーバー管理
メーリングリストに登録したアドレスを編集する必要に迫られて、あれこれ調べてみた。
テキストから文字を抽出するのは、grep コマンドを使う。
並べ替えをするには sort コマンド。

メーリングリストのアドレスは、/var/spool/ml/erenaML/activesに格納されていて、
登録が解除されたアドレスには ##bye# という接頭語がつく。
現在、登録済みのアドレスには、接頭語は何もつかない。

このアドレスリストをそのままコピーしたら、解除されたアドレスと登録済みのアドレスが混在していて、とても見にくい。
そこで、これらを分けて整理したい。。

##bye#という文字がついていない行を抽出するには?
$ grep -v '#' /var/spool/ml/erenaML/actives > address
-v オプションで、'文字'のついていない行を抽出し、ファイルaddressに書き込む。

(manページより・・・)
-v, --invert-match
結果を反転し、マッチしなかった行を選択します。

抽出したアドレスを、英数字の小さい順番で並べ替えるには?
$ sort address
addressファイルの中身を、アスキー文字の順で並べ替える。

以上の処理で、下のようになる。

元のファイル
##bye# bcd12edf.com
##bye# abc23edf.com
##bye# abc123.or.jp
abc234.ne.jp
abc123.or.jp

grepとsortで処理したファイル
abc123.or.jp
abc234.ne.jp

上記の処理を一度にするには?
$ grep -v '#' /var/spool/ml/erenaML/actives > address | sort
上のコマンド2行分を、パイプ(|)でつなぐ。