lookコマンドの使い道(その2)

man でlookの説明を読んでみます。

look は、 file の各行のうち、
string で指定された文字列で始まっている行を表示する。
look は二分検索を使っているため、file で指定するファイルは
ソートしておかなければならない。
( look で -d オプションを使うときにはソートするときの
sort(1) にも -d を使い、-f オプションを使うときは sort(1)
でも -f を使うこと)

二分検索をするため、どうやら結果を得るまでの時間が早いように思えます。
では実際に時間を計測してgrepと比べてみます。
今回は検索する文字列として/usr/share/dict/wordsには存在しない文字列asdfを指定してみました。

time look asdf

real    0m0.016s
user    0m0.016s
sys     0m0.000s

time grep ^asdf /usr/share/dict/words

real    0m0.003s
user    0m0.000s
sys     0m0.000s

この結果だけを見るとlookよりもgrepの方が早いように見えます。

ではlookコマンドのソースを読んで見ましょう。

まずはソース取得。

~$ apt-get source bsdmainutils
~$ cd bsdmainutils-9.0.6
~/bsdmainutils-9.0.6$ 

次にtreeコマンドでディレクトリ構造を確認します。

tree -d | nl
     1  .
     2  ├── debian
     3  │   ├── calendars    
     4  │   ├── lintian    
     5  │   ├── patches    
     6  │   └── source    
     7  ├── patches   
     8  └── usr.bin   
     9      ├── banner   
    10      ├── calendar   
    11      │   └── calendars    
    12      │       ├── de_AT.ISO_8859-15    
    13      │       ├── de_DE.ISO8859-1    
    14      │       ├── fr_FR.ISO8859-1    
    15      │       ├── hr_HR.ISO8859-2
    16      │       ├── hu_HU.ISO8859-2
    17      │       ├── ru_RU.KOI8-R
    18      │       └── uk_UA.KOI8-U
    19      ├── col
    20      ├── colcrt
    21      ├── colrm
    22      ├── column
    23      ├── from
    24      ├── hexdump
    25      ├── look
    26      ├── lorder
    27      ├── ncal
    28      ├── ul
    29      └── write

    30  28 directories

lookコマンドのソースファイルは25行目のディレクトリにありそうです。

One response to “lookコマンドの使い道(その2)

  1. We need more ingihsts like this in this thread.

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA