【grep】特定の文字列を含まないファイルを検索する

投稿日: 2023/05/08

コマンド 




はじめに

grepは、LinuxやUnix系のシステムでよく使われるコマンドの一つです。grepを使用すると、指定したファイル内で特定の文字列を検索できます。しかし、特定の文字列を含まないファイルを検索する方法を知っている人は少ないようです。

本記事では、特定の文字列を含まないファイルを検索する方法について、grep -Lオプションの使い方を中心に解説します。

grepコマンドとは

まずは、grepコマンドについて簡単に説明します。grepコマンドは、指定したファイル内で特定の文字列を検索するためのコマンドです。以下は、簡単な使用例です。

```
$ grep "keyword" filename.txt
```

この場合、filename.txtファイル内でkeywordという文字列を検索します。このように、grepコマンドは検索したい文字列を指定することで検索ができます。

grepオプションの基本的な使い方

次に、grepコマンドのオプションについて簡単に説明します。grepコマンドには、検索の挙動を変えるためのオプションが存在します。代表的なオプションを以下に示します。

  • -i : 大文字・小文字を区別せずに検索する。
  • -v : 指定した文字列を含まない行を表示する。
  • -c : マッチした行の数を表示する。

特定の文字列を含まないファイルを検索する方法

それでは、本記事のメインテーマである、特定の文字列を含まないファイルを検索する方法について説明します。

通常、grepコマンドでは、指定した文字列が含まれる行を表示することができますが、逆に指定した文字列が含まれない行を表示する方法はありますか?その答えは、grep -vオプションを使用することです。

例えば、以下のコマンドを実行することで、filename.txtファイル内でkeywordという文字列が含まれない行を表示することができます。

```
$ grep -v "keyword" filename.txt
```

上記のコマンドを実行すると、filename.txtファイル内でkeywordという文字列を含まない行が表示されます。

grep -Lオプションの使い方と効果

しかし、grep -vオプションでは、文字列を含まない行を表示することはできても、ファイル単位で検索しているため、特定の文字列を含まないファイルを検索することはできません。そこで、grep -Lオプションを使用します。

grep -Lオプションは、指定した文字列を含まないファイルのみを表示することができます。以下は、使用例です。

```
$ grep -L "keyword" *
```

上記のコマンドを実行することで、現在のディレクトリ内でkeywordという文字列を含まないファイルのみが表示されます。

grep -lオプションとgrep -Lオプションの比較

grep -Lオプションと対比するオプションに、grep -lオプションがあります。grep -lオプションは、指定した文字列を含むファイル名のみを表示します。以下は、使用例です。

```
$ grep -l "keyword" *
```

上記のコマンドを実行することで、現在のディレクトリ内でkeywordという文字列を含むファイル名のみが表示されます。

grep -Lオプションとgrep -lオプションを比較すると、grep -lオプションは指定した文字列を含むファイル名のみを表示するため、そのファイル内で指定した文字列がどこに存在するかは分かりません。一方で、grep -Lオプションは、指定した文字列を含まないファイルのみを表示するため、指定した文字列を含まないファイルを検索することができます。

まとめ

本記事では、特定の文字列を含まないファイルを検索する方法について、grep -Lオプションを中心に解説しました。以下が、本記事で紹介した内容のまとめです。

  • grepコマンドは、指定したファイル内で特定の文字列を検索するためのコマンドです。
  • grep -vオプションを使用することで、指定した文字列を含まない行を表示することができます。
  • grep -Lオプションを使用することで、指定した文字列を含まないファイルのみを表示することができます。
  • grep -lオプションは、指定した文字列を含むファイル名のみを表示します。

今回の記事で紹介したgrepコマンドは、LinuxやUnix系のシステムで頻繁に使用されるコマンドの一つです。特定の文字列を検索するだけでなく、オプションを使うことで様々な検索が可能になるため、コマンドを使いこなすことは非常に重要です。

また、grep -Lオプションについては、覚えにくいという問題があるため、grep -lオプションと対比することで覚えると良いでしょう。

本記事を読んで、grep -Lオプションを使った特定の文字列を含まないファイルの検索方法を学ぶことができました。ぜひ、実際に試してみて、自分のコマンドスキルを向上させましょう。


このエントリーをはてなブックマークに追加     

profile
profile

洋ちゃん

@c5apple

システムエンジニアをしています。二児の父です。

夢は天井から床までビッシリ並んだ本棚のある書斎を作ること!