テキスト処理の凱歌
コンピュータがもっとも得意とすることは何でしょう?
計算機というぐらいだから,「計算」が得意なんでしょうか.
計算機は整数計算はともかく,
実数計算はあまり得意ではありません.
ケタが有限で打ち切られるからですね.
計算機で実数計算をやろうとすると,ユーザーのほうが
いろいろと気を使わなければなりません
(ホントはそうなんだけど……
しかし不注意のまま使用することもままある^^).
計算機がもっとも得意とすることのひとつは,
実は「テキスト処理」です.
「文字」を置き換えたり並べ替えたりする操作ですね.
どんなUnix にも標準的に搭載されている
テキスト処理コマンドの一例を下に掲げています.
このテキスト処理能力の
充実こそがUnix をして永年にわたり
生残させてきた要因のひとつだと思います……
テキストファイルならば「人間が簡単に読む」ことができ
さらに「多くの計算機で簡単に処理」できますね.
ファイルから文字列(正規表現)を検索する
grep regexp-str file-names...
特定の文字列を含まない行を検索する
grep -v regexp-str file-names...
テキストの文字列を置換する
sed 's/pattern/replacement/' file-names...
ファイルの文字を置き換える(例は小文字化)
tr 'A-Z' 'a-z' file-name
テキストの特定の文字を削除する(例は改行文字の削除)
tr -d '\012' file-name
テキストをソートする
sort file-name
特定の項目の内容でソートする
sort -item#
文字列としてではなく数字としてソートする
sort -n
逆順にソートする
sort -r
ソートの際,大文字と小文字を区別しない
sort -f
2つのテキストの異なる行を出力する
diff file-name-1 file-name-2
2つのテキストの相違を前後数行とともに出力する(context diff)
diff -c file-name-1 file-name-2
ソート済みの2つのテキストに関して, 一致する行を出力する
comm file-name-1 file-name-2
同じくソート済みのファイルに関して, 重複する行を取り除く
uniq
テキストの行数・単語数・文字数を数える
wc file-names...
ソート済みのテキストに対して,同じ行の出現頻度を数える
uniq -c
ファイルを指定行数で分割する
split -#lines file-name
タブをスペースに展開する
expand file-names...
スペースをタブにまとめる
unexpand file-names...
テキストを特定の桁数で折り返す(その前に expand する)
fold -#columns
戻る