ホームページ  >  記事  >  php教程  >  grepコマンドの詳しい説明と関連例

grepコマンドの詳しい説明と関連例

高洛峰
高洛峰オリジナル
2016-12-13 14:40:171084ブラウズ

1. 文字と一致します

。 任意の 1 文字と一致します

[ ] 指定された範囲内の任意の文字と一致します

[:alpha:] アルファベット文字

[: lower : ] 英小文字

[:upper:] 英大文字

[:digit:] 数字

[:alnum:] 英数字

[:space:] キャリッジなどの空白文字(印刷禁止)改行文字、改行文字、垂直タブ、フォームフィード

[:punct:] 句読点文字

[:cntrl:] 制御文字(印刷禁止)

[:print:] 印刷可能文字

使用時 通常は正方形2つ括弧が使用されます。これは次の例で使用されます。

2. 一致回数

* いつでも前の文字と一致します

.* 任意の長さの任意の文字と一致します ( grep "r.*t" /etc/passwd などの貪欲モードに注意してください)

x{m ,n } 前の文字が少なくとも m 回、最大で N 回出現することを指定します。

x{m,} 前の文字が少なくとも m 回出現することを指定します

x{0,n} 前の文字が最大 N 回出現することを指定します

x{m} m 回完全に一致します

?前の文字 0 または 1 回

3. アンカー文字

1.^ 行頭のアンカー grep "^r..t" /etc/passwd

2.$ 行末のアンカー grep " h$" /etc/passwd

3.^$ アンカー空行 grep "^$" /etc/passwd

4.< (b) アンカー単語先頭 grep "

5.> (b) grep "r..t>" /etc/passwd

の例 (混同しやすい):

には少なくとも 1 つの空白文字が含まれています。 grep "[[:space:]] {1,}" /etc /passwd

には少なくとも 1 つの非空白文字が含まれています grep "[^[:space:]]{1,}" /etc/passwd

には空白文字がありません grep -v " [^[:space:]]{1, }" /etc/passwd

6.() グループ文字 grep "(l..e).*1r"

例:

grep --color "l( [13]):1:.*: 1" /etc/inittab

4. オプション

-v 結果を反転します

-i 大文字と小文字を無視します

-o 一致した文字列 (その他の内容) のみを表示します行は表示されません)

-E 拡張正規表現をサポートします

-A n 一致した行の下に n 行を表示します

-B n 一致した行の上に n 行を表示します

-C n 一致した行の上下に n 行を表示します一致した行

演習:

1. システム内で user1 に関する関連情報を見つけます。 (事前に user11、myuser1 を作成しておきます) (エラーが発生しやすい)

grep "user1" /etc/passwd user1 を含むすべての行

grep "" /etc/passwd 問題ないようですが、次のユーザーを追加するとOK ではありません

useradd -c "user1 の叔父" /etc/passwd -c はコメントです

grep "^" /etc/passwd は正常に一致しました

2. user で始まり、番号 ユーザー関連情報。

grep "^user[0-9]{1,}>" /etc/passwd

3. /etc/inittab ファイル内の次の 2 行のテキストの特徴を分析し、次のようなパターンを書き込みます。正確に見つけることができる 2 つの行

では、各行の数字が同じである必要があります。

l1:1:wait:/etc/rc.d/rc 1

l3:3:wait:/etc/rc.d/rc 3

grep "l([13]):1:.*: .* 1" inittab

拡張子: 上記のすべての特性に一致します: grep "l([0-9]):1:.*:.* 1" inittab

10 を超える場合は、最小限の一致を追加する必要があります: grep "l( [0-9]{1,}):1:.*:.* 1" inittab

4. /proc/meminfo ファイル内の s で始まる行を大文字と小文字を区別して表示します

grep " ^[sS] " /proc/meminfo

5. /etc/passwd

grep "nologin$" /etc/passwd

の nologin で終わる行を表示します。6. /etc/inittab の # で始まる行を表示します次に、複数の空白文字を含む 1 行または複数の行、空白以外の文字が続きます

grep "^#[[:space:]]{1,}[^[:space:]]" /etc/inittab

7. /etc/inittab に 2 つのコロンの間に数字が含まれる行を表示します

grep ":[0-9]:" /etc/inittab

8. 1 つ以上の /boot/grub/grub.conf ファイルを表示します。空白文字を含む行

grep ":[0-9]:" /etc/inittab

9。 /etc/inittab ファイル内の、番号で始まり同じ開始番号を持つ番号で終わる行を表示します。

grep "^([0-9]).*1$" /etc/inittab

10. /etc/inittab ファイル内の空白行以外を表示します

grep -v "^$" /etc/inittab

11. 現在のネットワークインターフェイスの関連する IP アドレスを取得します (127.0.0.1 を除く)

ifconfig |grep "inet addr" |grep -v "127.0.0.1"| " - f1

ifconfig |grep -A 1 "eth" |grep -o "addr:[0-9.]{1,}"|cut -d: -f2

5. 拡張正規表現

は正規表現とは異なります。 :

() は () に置き換えられます

{} は {}

+ に置き換えられます 一致の数、その前の文字と 1 回以上一致します

| または

例:

は ifconfig の結果と一致します。は 1 ~ 255 の整数です

ifconfig|grep --color -E "<([1-9]|[1-9][0-9]|1[1-9][0-9 ]| 2[0-5][0-5])>"


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。