\r\n\r\n

linuxでのlookコマンドの使い方

linux look コマンドは、ファイルを走査して、特定の単語やフレーズで始まるすべての行をリストアップします。でも、気をつけてください。Linuxのディストリビューションによって動作が異なる。このチュートリアルでは、その使い方を紹介します...

Linuxのlookコマンドは、ファイルを走査して、特定の単語やフレーズで始まるすべての行をリストアップします。でも、気をつけてください。Linuxのディストリビューションによって動作が異なる。このチュートリアルでは、その使い方を紹介します。

ubuntuのlookコマンドの挙動が異なる。

シンプルで便利なコマンドのため、この記事を調べている間、lookは私に良い説明を与えてくれました。互換性とドキュメントの2つの問題があります。

この記事は、Ubuntu, Fedora, Manjaroで確認しました。問題は、3つのケースで挙動が異なることです。Ubuntuのバージョンが大きく異なるのです。Ubuntuのマニュアルページによると、動作は同じはずです。

lookは伝統的にバイナリサーチを使うのに対し、ubuntulookはリニアサーチを使うんですね。Bionic Beaver (18.04), Co**ic cutlefish (18.10), Disco Dingo (19.04) のオンラインUbuntuマニュアルページには、Ubuntu版ではバイナリ検索を使用すると書かれていますが、実際はそうではありません。

ローカルのUbuntuのマニュアルページを見ると、その外観は線形検索を使用していることがよくわかる。強制的にバイナリサーチを使用させるコマンドラインオプションがあります。他のディストリビューションには、いずれも検索方法を選択するオプションはありません。

man look

マニュアルページをスクロールしていくと、バイナリサーチではなく、リニアサーチを使ったこのバージョンのルックについて説明しているセクションがあります。

この話の教訓は、まず現地のパンフレットのページを確認することです。

リニアサーチとバイナリサーチの比較

二項探索法は、線形探索よりも高速で効率的です。大容量のファイルを扱うと、これが顕著に現れます。バイナリサーチの欠点は、ファイルの並べ替えが必要なことです。ソートしたくない場合は、そのコピーをソートしてからlookで使用します。

このことは、この記事の別の場所で実証します。なお、Fedora、Manjaro、そして私が期待するほとんどのLinuxの世界では、ソートされたコピーを作成して使用する必要があります。

言葉のインストール

は、ローカルな辞書ファイル "words "だけでなく、任意のテキストファイルも扱うことができます。

Manjaroでは、このコマンドで "words "ファイルをインストールする必要があります。

sudo pacman -Syu words

ルックを使う

本稿では、エドワード・リアの詩「The Smorgasbord」のテキストファイルを使用します。

このコマンドでどんな風に見えるか見てみましょう。

less the-jumblies.txt

これは詩の最初の部分である。なお、Ubuntuを使用しているため、ファイルはソートされていない状態のままです。FedoraとManjaroでは、ソートされたコピーを使用しますが、これについては後述します。

They」で始まる行を探せば、Jumbliesが何をしたのかがわかるだろう。

look They the-jumblies.txt

は、次のような行を列挙して応答する。

文字ケースを無視する

大文字と小文字の違いを無視するようにするには、-f (ignore case) オプションを使用します。今回も検索キーワードに「they」を使用しましたが、今回は小文字で表記しています。

look -f they the-jumblies.txt

このとき、結果には余分な行が含まれています。

最後の結果では、"THEY "で始まる行は、全角文字であり、私たちの検索キーワード "THEY" と一致しないため、表示されません。

無視する場合は、結果に含めることができます。

ソートされたファイルの検索を行う

もし、お使いのLinuxディストリビューションのルックバージョンが、バイナリ検索を使用する従来の動作に従っている場合、ファイルをソートするか、ソートされたファイルのコピーを使用する必要があります。

今度はManjaroで、"they "を検索するコマンドを繰り返してみましょう。

007Ys3FFgy1gp68oeg9sdj30hy025t8n

ご覧の通り、結果は出ませんでしたが、詩のいくつかの行が "they" で始まることが分かっています。

ファイルを分類してみようlook で -f (大文字小文字を無視) または -d (英数字とスペースのみ) オプションを使用する場合、ファイルをソートする際に使用する必要があります。

o(出力)オプションで、ソート行を追加するファイル名を指定できます。この例では "sort.txt" となっています。

sort -f -d the-jumblies.txt -o sorted.txt

sort.txtファイルを見てから、-fと-dのオプションを使ってみましょう。

これで目的の結果が得られる。

スペースと英数字のみを考慮する

英数字やスペース以外を無視するようにするには、-d (alphanumeric) オプションを使用します。

"oh "で始まる単語があるかどうか見てみましょう。

look -f oh the-jumblies.txt

は結果を返しません。

もう一度、英数字とスペース以外を無視するように指定してみましょう。つまり、句読点などの文字や記号は無視されます。

look -f -d oh the-jumblies.txt

以前はこの行が見つからなかったのは、反転したカンマと感嘆符が検索を混乱させたからです。

終端文字を指定する

特定の文字を終端文字として使用するようにlookに指示することができます。一般的には、スペースと行末文字が終端文字として使用されます。

t(終端文字)オプションで、使用する文字を指定することができます。この例では、アポストロフィ文字を使用します。文字列を開いていないことが分かるように、バックスラッシュで引用する必要があります。

また、検索語にはスペースが含まれるため、引用しています。私たちは2つの単語を探しています。

look -f -t \' "they call" the-jumblies.txt

結果は、検索語に一致し、終端文字として使用するアポストロフィで終わる。

ファイルなしでルックを使用する

コマンドラインでファイル名を指定しない場合、look はワードファイルを使用します。

注文する。

007Ys3FFgy1gp68ojimhnj30hy01lwec

以下のような結果が得られました。

ドキュメント内の "circle "から始まる単語です。

もっと見る

以上です。

Linuxのディストリビューションによって動作が異なることを知り、自分のバージョンがバイナリサーチを使うのか線形探索を使うのかが既に分かっていれば、とても簡単です。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ