ファイルの数が多くなると、ファイル名だけでは、どこに何があったのかわからなくなってくる。あるキーワードが含まれるファイルを探したいときに、エディタの検索機能を用いるのも不便だ。grepコマンドはファイルから、指定したキーワードを探してくれる。
たとえば、linux.txtから“linux”という文字列を探すには、次のようにする。
USER$ grep linux linux.txt
キーワードの大文字/小文字を区別しないで探すのならiオプションを付ける。nオプションは一致した行の番号を表示する。
USER$ grep -in linux linux.txt 4: % ねらいとしては、Linux(UNIX)を 8: % 操作を通して、Linuxを理解してもらう 32: Linuxシステムは図1のような木構造 123: $ mkdir linux
キーワードの指定には正規表現も指定できる。正規表現とは、文字列のパターンを指定する記述法のことだ。表3によく使われる正規表現を示す。egrepではより強力な正規表現を使える。
正規表現 | 意味 |
---|---|
^ | 行の先頭 |
$ | 行の終り |
. | 任意の1文字 |
[...] | ...のうちの 任 意の1文字。a-zや0-9のような範囲指定も有効 |
[^...] | ...にない任意の1文字。範囲指定も有効 |
r* | ゼロ回以上の、rの繰り返し |
r+ | 1回以上のrの繰り返し |
r? | ゼロまたは1回のr |
r{n,m} | n回以上m回以下のrの繰り返し |
r1|r2r | 1またはr2(egrepのみ) |
(r) | rの正規表現(egrepのみ) |
正規表現を用いると、空行を探すことも簡単にできる。
USER$ grep -n '^$' linux.txt 10: 28: 44:
また、次のようにして、行頭がUSERまたはrootで始まる文字列を検索することも簡単だ。かっこや┃の表記はegrepでしか使えない。
USER$ egrep -n '^(USER|root)' linux.txt 14:USER$ 20:USER$ pwd 80:USER$ cd /usr 160:root rootユーザーのホームディレクトリ
fgrepを用いると、複数個のキーワードを記述したファイルに基づいて検索することができる。
USER$ cat key hoge fuga USER$ fgrep -ni -f key linux.doc
この場合は、keyファイルに記述されている“hoge”と“fuga”という文字列の含まれる行を表示する。
Column バーチャルCD-ROM
CD-ROMのバックアップを取りたい場合、catコマンドの引数にデバイスファイルを指定すると、そのデータを読み込み、標準出力に出力する。そこで、次のようにするだけで、簡単にCD-ROMの内容を取り出すことができる。
USER$ cat /dev/scd0 > /home/data /foo|.img
作成したファイルは、ループバックデバイスを経由して、ファイルシステムにマウントできる。
root# mount -t iso9660 -o loop /home/data/foo.img /mnt/cdrom