GNU/Linux >> Linux の 問題 >  >> Linux

grepの基本

この記事では、いくつかのツール、特にgrepを紹介します。 、指定された正規式に一致するディレクトリまたはファイルを検索するために使用できるLinux®コマンドラインツール。

grepとは ?

公式回答:

grep 名前付き入力ファイル(ファイルを指定しない場合や単一のハイフンを使用する場合は標準入力(-)を検索します )ファイル名として)指定されたパターンへの一致を含む行の場合。デフォルトでは、grep 一致する行を印刷します。

ニサーの答え:

Ctrl のような特定のファイル、ディレクトリ、または出力を検索します + f Windows®で。この機能を使用して、必要なものを正確にターゲティングします。

基本

多くの場合、コマンドがどのように機能するかを示す最も簡単な方法は、例を使用することです。

/ etc / passwdですべてのユーザーを確認できます 次のコマンドでファイルを作成します:

# cat /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
apache❌48:48:Apache:/usr/share/httpd:/sbin/nologin
mysql❌27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
sher❌1002:1002::/home/sher:/bin/bash

grepを使用する 、そのリストを絞り込んで1人のユーザーを見つけることができます。

特定のユーザーを探す

ユーザーを一覧表示しますが、 sherの行のみを表示する出力をフィルタリングします その中に。

# cat /etc/passwd | grep 'sher'
sher❌1002:1002::/home/sher:/bin/bash

または、1つのコマンドで同じユーザーを検索します:

# grep 'sher' /etc/passw
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

次の例では、bashアクセス権を持つすべてのユーザーを検索します。

# grep 'bash' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
フラグ

ほとんどのLinuxコマンドと同様に、grep フラグ(通常は1つ以上のダッシュが前に付いた1つ以上の文字)を使用して、機能を追加します。

-v :指定された検索パターンを含まないものをすべて表示します:

# grep -v 'nologin' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

-i :大文字と小文字を区別せずに一致を表示します。これは、必要なものが正確にわからない場合に役立ちます:

# grep -i 'SHER' /etc/passwd
sher❌1002:1002::/home/sher:/bin/bash
複数のパターンを検索

grep パイプ記号を使用します( | またはを意味します 一度に複数のものを検索できます。次のいずれかの方法を使用して、一度に複数のものを検索します。

\ :次の文字であるパイプをエスケープします( | またはとして機能できるようにする :

# grep 'sher\|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

-E |などの特殊文字を解釈します またはとして :

# grep -E 'sher|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

egrep コマンドは同じことをします:

# egrep 'sher|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash
フラグの組み合わせ

さまざまなフラグを組み合わせて使用​​して、検索を絞り込むことができます。

次の例は、シャーではないすべてのユーザーを示しています またはラック 、ファイルコンテンツのパターンの場合に関係なく:

# egrep -vi 'SHER|RACK' /etc/passwd
実用的な例

次のセクションでは、grepの他の使用法について説明します。 その他の便利なコマンドを紹介します。

コメントを無視する

Linuxでは、ポンド記号()を追加して行をコメントアウトします。 )行の先頭。このようにして、独自のメモを追加できます。スクリプトまたはプログラムはコメントを無視し、それらの行を実行しません。

これらのコメントを無視してファイルを表示するには、次のコマンドを使用します。

# grep -v ^'#' /file

grepを実行することもできます 別のgrepの上に コマンド。

たとえば、コメント行を無視してファイルをリストし、特定のものを探します。

# grep -v ^'#' /file | grep 'hello'
検索履歴

ほとんどのLinuxシステムは、実行されたコマンドのログを保持します。このログには、コマンドhistoryでアクセスできます。 。 historyを組み合わせる場合 grepを使用 、これまでにシステムで実行されたものを非常に効果的に調査できます。

passwdを確認してください 実行されるコマンドおよびpasswdを含むその他のコマンド パターン:

# history | grep 'passwd'

特定の日に実行される検索コマンド:

# history | grep '2021-05-10'

特定の時間に実行されたコマンドを確認します:

# history | grep '2021-05-10 11:00:'
ポートとルートログインを確認する

ポート80で実行されているWebトラフィックを一覧表示します および443

# netstat -plnt | egrep '80|443'

^を使用できます grepで 検索パターンで始まる行のみを表示するコマンド。

たとえば、次のコマンドを実行して、システムがrootログインを許可しているかどうかを確認します。

# grep ^'Permit' /etc/ssh/sshd_config
頭と尾でログを検索

topを使用する ログイン試行ログの最初の10行を表示するには:

# head /var/log/secure

tailを使用する ログイン試行ログの最後に行を表示するには:

# tail /var/log/secure

lastを使用する 最新のログインの最初の10行を表示するコマンド:

# last | head -10

tail -fを使用します ファイルがリアルタイムで大きくなるのを監視します。たとえば、最新のログイン試行を確認したり、進行中の試行を監視したりできます。誰かがログインしようとすると、次のコマンドで発生するように表示されます。

# tail -f /var/log/secure
Ctrl + C to exit
その他のツール

このセクションのツールを使用して、新しく見つけたスキルを試すことができます。

vimまたはnano

vivim 、およびnano Linuxで最も一般的なテキストエディタです。Windowsでメモ帳を使用するのと同じように、ファイルを編集するために使用できます。

開いて新しいファイルを作成します。テスト

# vim /test
アクション キーシーケンス 説明
新しいコンテンツの入力を開始するには: i テキストを挿入する準備をする
保存せずに終了するには: Esc :q! 挿入モードを解除して終了
終了して保存するには: Esc :wq! 挿入モードをエスケープし、書き込み、終了
エコー

echo は、入力した内容を繰り返すようにLinuxに指示する単純なコマンドです。これはgrepのテストに効果的です。 最初に新しいファイルを作成せずにコマンドを実行します。

たとえば、こんにちは 表示:

# echo 'hello'
hello

こんにちはを表示します 真ん中の文字を検索します:

# echo 'hello' | grep 'ell'
hello

echoを使用することもできます -eを使用して複数行を表示するには および\n 新しい行を追加します。

こんにちはを表示します およびho 別の行に:

# echo -e 'hi\nho'
hi
ho

こんにちはを表示します およびho 別の行でこんにちはを検索します :

# echo -e 'hi\nho' | grep 'hi'
hi
sed

grepのように 、sed には多くの用途がありますが、主にこのコマンドを使用して、指定したコンテンツを検索および置換します。特定の行を特定する方法の基本的な例を次に示します。

まず、vimを使用します ファイルを作成するには:

# vim /test

エディターが開いたら、次の行を入力します。

1 Hi
2 How
3 Are
4 You

新しいファイルを表示します:

# cat test
1 Hi
2 How
3 Are
4 You

sedを使用する 最初の行を除くすべてを返すには:

# sed 1d test
2 How
3 Are
4 You

最初の行のみを返します:

# sed 1q test

または

# sed '1!d' test
1 Hi

2行目から4行目のみを返します:

# sed '2,4!d' test
2 How
3 Are
4 You
結論

awkなど、使用できるツールは他にもたくさんあります。 、cutsortxargs 、等々。これで、echoを使用してファイルを作成する方法がわかりました。 、あなたは彼らとより効果的に実験することができます。


Linux
  1. / bin/falseと/sbin/nologinの違い

  2. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  3. #の間にスペースは許可されていますか?そして/bin/ bash In Shebang?

  1. Bash =〜正規表現とHttps://regex101.com/?

  2. Linux – / usr/binと/usr/sbinを/bin(gnu / linux)にマージしますか?

  3. / bin/shが/bin/bashではなく/bin/ dashを指すのはなぜですか?

  1. バイナリを /bin、/sbin、/usr/bin、および /usr/sbin にインストールし、 --prefix および DESTDIR と対話します

  2. #!/usr/bin/env bash と #!/usr/bin/bash の違いは何ですか?

  3. /dev/shm/ と /tmp/ はいつ使用する必要がありますか?