Grepは、LinuxおよびUnixシステムのコマンドラインユーティリティであり、文字列または単語を照合した後、ファイルから行を印刷するために使用されます。 grepはグローバル正規表現printの略で、パターンに基づいて1つ以上のファイルから文字列を検索するために使用できます。パターンは、単一の文字、文字の束、単一の単語、または文の場合があります。
指定された文字列を使用してgrepコマンドを実行すると、一致する場合、既存のファイルの内容を変更せずに、文字列を含むファイルの行が表示されます。
Grepコマンドの構文:
$grep<オプション><検索文字列><ファイル名>
このチュートリアルでは、14の便利なlinuxgrepコマンドの例について説明します。例を詳しく見ていきましょう。
例1)ファイル内のパターンまたは単語を検索する
grepコマンドに続いて検索文字列またはパターンを実行すると、ファイルの一致する行が出力されます。例を以下に示します。
/ etc/passwdファイルファイルで「linuxtechi」という単語を検索します
[email protected]:~# grep linuxtechi /etc/passwd linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash [email protected]:~#
例2)複数のファイルのパターンを検索する
/ etc / passwd、/ etc / shadow、/ etc / gshadowなどの複数のファイルで「linuxtechi」という単語を検索するには、
を実行します。[email protected]:~# grep linuxtechi /etc/passwd /etc/shadow /etc/gshadow /etc/passwd:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash /etc/shadow:linuxtechi:$6$DdgXjxlM$4flz4JRvefvKp0DG6re:16550:0:99999:7:::\ /etc/gshadow:adm:*::syslog,linuxtechi /etc/gshadow:cdrom:*::linuxtechi /etc/gshadow:sudo:*::linuxtechi /etc/gshadow:dip:*::linuxtechi /etc/gshadow:plugdev:*::linuxtechi /etc/gshadow:lpadmin:!::linuxtechi /etc/gshadow:linuxtechi:!:: /etc/gshadow:sambashare:!::linuxtechi [email protected]:~#
例3)単語(grep -l)を含むファイルの名前をリストします
複数のファイルから「linuxtechi」という単語を含むファイルを一覧表示するとします。そのためには、grepコマンドで「-l」オプションを使用し、その後に単語(パターン)とファイルを続けます。
[email protected]:~# grep -l linuxtechi /etc/passwd /etc/shadow /etc/fstab /etc/mtab /etc/passwd /etc/shadow [email protected]:~#
例4)関連する行番号(grep -n)とともにファイル内のパターンを検索します
パターンまたは単語に一致するリスト行とその番号が必要だとします。 grepコマンドで「-n」オプションを使用します。この例のパターンは「linuxtechi」です
[email protected]:~# grep -n linuxtechi /etc/passwd 39:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash [email protected]:~#
以下は、/ etc/passwdおよび/etc/shadowファイルの「root」という単語と一致した後に行とその番号を表示する別の例です
[email protected]:~# grep -n root /etc/passwd /etc/shadow
例5)パターンを除く行を印刷します(grep -v)
特定の単語「linuxtechi」を含まないファイル/etc/passwdのすべての行を一覧表示します。
[email protected]:~# grep -v linuxtechi /etc/passwd
例6)特定のパターンで始まるすべての行を検索します(grep ^)
Bashシェルは、カレット記号(^)を行または単語の先頭を示す特殊文字として扱います。ファイル/etc/ passwdの「root」という単語で始まる行を表示して、grepコマンドの下で実行してみましょう
[email protected]:~# grep ^root /etc/passwd root:x:0:0:root:/root:/bin/bash [email protected]:~#
例7)特定の単語で終わるすべての行を検索します(grep $)
Bashシェルは、ドル記号「$」を行または単語の終わりを示す特殊文字として扱います。 「bash」で終わる/etc/passwdのすべての行を一覧表示します 」という言葉。
[email protected]:~# grep bash$ /etc/passwd root:x:0:0:root:/root:/bin/bash linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash [email protected]:~#
例8)単語またはパターンを再帰的に検索します(grep -r)
ファイル名を指定せずにgrepコマンドを実行すると、一致する文字列を含むすべてのファイルの行が表示されます。現在の作業ディレクトリで再帰的に検索を実行します。
フォルダのすべてのファイルで単語を再帰的に検索するには、grepコマンドで「-r」オプションを使用します。例を以下に示します。
[email protected]:~# grep -r linuxtechi /etc/ /etc/subuid:linuxtechi:100000:65536 /etc/group:adm:x:4:syslog,linuxtechi /etc/group:cdrom:x:24:linuxtechi /etc/group:sudo:x:27:linuxtechi /etc/group:dip:x:30:linuxtechi /etc/group:plugdev:x:46:linuxtechi /etc/group:lpadmin:x:115:linuxtechi /etc/group:linuxtechi:x:1000: /etc/group:sambashare:x:131:linuxtechi /etc/passwd-:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash /etc/passwd:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash ............................................................................
上記のコマンドは、「/etc」ディレクトリ内の「linuxtechi」という単語を再帰的に検索します。
例9)ファイルのすべての空行または空白行を検索します(grep ^ $)
ファイルからすべての空行または空白行を検索して一覧表示するには、grepコマンドで特殊文字の組み合わせ「^$」を使用します。例を以下に示します。
[email protected]:~# grep ^$ /etc/shadow [email protected]:~#
/ etc / shadowファイルには空の行がないため、何も表示されません。
例10)検索中の大文字小文字を無視する(grep -i)
-grepコマンドのiオプションは、大文字と小文字を無視します。つまり、検索中に大文字と小文字を区別しません
。例を見てみましょう。passwdファイルで「LinuxTechi」という単語を検索したいと思います。
[email protected]:~$ grep -i LinuxTechi /etc/passwd linuxtechi:x:1001:1001::/home/linuxtechi:/bin/bash [email protected]:~$
注: Grepコマンドを使用すると、「-w」オプションを使用して正確な単語に基づいて検索できます。例を以下に示します。
[email protected]:~$ grep -w cook /mnt/my_dish.txt
上記のコマンドは、「cook」という単語を含む行を検索して検索します。料理のある結果にはなりません。
例11)複数のパターンまたは単語を検索する(grep -e)
たとえば、単一のgrepコマンドで「linuxtechi」と「root」の単語を検索し、grepコマンドで-eオプションを使用してから、検索パターンを選択します
[email protected]:~# grep -e "linuxtechi" -e "root" /etc/passwd root:x:0:0:root:/root:/bin/bash linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash [email protected]:~# or [email protected]:~# grep -E "linuxtechi|root" /etc/passwd
例12)ファイルから検索パターンを取得する(grep -f)
grepコマンドの「-f」オプションを使用して、ファイルから検索パターンを取得します。例を以下に示します:
まず、現在の作業ディレクトリに検索パターンファイル「grep_pattern」を作成します。私の場合、以下の内容を入れました。
[email protected]:~# cat grep_pattern ^linuxtechi root false$ [email protected]:~#
次に、grep_patternファイルを使用して検索してみます。
[email protected]:~# grep -f grep_pattern /etc/passwd
例13)検索パターンに一致する行数をカウントします(grep -c)
検索パターンに一致する行数をカウントする場合は、grepコマンドで「-c」オプションを使用します。
上記の例を考えて、検索パターンに一致する行を数えましょう。
[email protected]:~# grep -c -f grep_pattern /etc/passwd 22 [email protected]:~#
例14)パターンマッチングの前後にN行を表示する(grep -B -A)
a)パターンマッチングの前に4行を表示し、grepコマンドで-Bオプションを使用します。例を以下に示します。
[email protected]:~# grep -B 4 "games" /etc/passwd
b)パターンマッチング後に4行を表示し、grepコマンドで-Aオプションを使用します
[email protected]:~# grep -A 4 "games" /etc/passwd
c)-Cオプションを使用してパターンマッチングの周りに4本の線を表示します
[email protected]:~# grep -C 4 "games" /etc/passwd
これですべての記事です。これらの例がgrepコマンドをより効率的に使用するのに役立つことを願っています。以下のコメントセクションでフィードバックやコメントを共有してください。
また読む :Linux初心者向けの10個の「rm」コマンド例