ホームページ  >  記事  >  php教程  >  Linuxのgrepコマンド

Linuxのgrepコマンド

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

1. 機能
Linux システムの grep コマンドは、正規表現を使用してテキストを検索し、一致する行を出力することができる強力なテキスト検索ツールです。 grep の正式名は Global Regular Expression Print です。これは、その使用権限がすべてのユーザーに与えられることを意味します。

2. 形式
grep [オプション]

3. 主要パラメータ
[オプション] 主要パラメータ:
-c: 一致する行数のみを出力します。
-I: 大文字と小文字は区別されません (単一文字にのみ適用されます)。
-h: 複数のファイルをクエリするときにファイル名を表示しません。
-l: 複数のファイルをクエリする場合、一致する文字を含むファイル名のみが出力されます。
-n: 一致する行と行番号を表示します。
-s: 存在しない、または一致するテキストがないエラー メッセージを表示しません。
-v: 一致するテキストを含まないすべての行を表示します。
パターン正規表現の主なパラメータ:
: 正規表現内の特殊文字の元の意味を無視します。
^: 正規表現の開始行と一致します。
$: 正規表現の終了行と一致します。
<: 正規表現に一致する行から開始します。
>: 正規表現に一致する行の末尾に移動します。
[ ]: [A] などの 1 文字、つまり A が要件を満たします。
[-]: [A-Z] などの範囲、つまり A、B、C ~ Z がすべて要件を満たします。
。 : すべて単一の文字。
*: 文字があり、長さは 0 になる可能性があります。

4. grep コマンドの簡単な使用例
$ grep ‘test’ d*
d で始まるファイル内の test を含む行をすべて表示します。
$ grep ‘test’ aa bb cc
aa、bb、cc ファイル内の test に一致する行を表示します。
$ grep ‘[a-z]{5}’ aa
少なくとも 5 つの連続する小文字を含む文字列を含むすべての行を表示します。
$ grep 'w(es)t.*1' aa
west が一致した場合、es はメモリに保存されて 1 としてマークされ、任意の数の文字 (.*) に続いて別の es(1) が検索されます。見つかった場合は、その行を表示します。 egrep または grep -E を使用する場合は、"" 記号でエスケープする必要はなく、「w(es)t.*1」と直接記述します。

5.grep コマンドの複雑な使用例
'/usr/src/Linux/Doc' ディレクトリで文字列 'magic' を含むファイルを検索しているとします:
$ grep magic /usr/src/Linux/Doc/*
sysrq.txt:* マジック SysRQ キーを有効にするにはどうすればよいですか?
sysrq.txt:* マジック SysRQ キーを使用するにはどうすればよいですか?
ファイル「sysrp.txt」にはこの文字列が含まれており、SysRQ の機能について説明しています。
デフォルトでは、「grep」は現在のディレクトリのみを検索します。このディレクトリの下に多くのサブディレクトリがある場合、「grep」は次のようにリストします:
grep: sound: ディレクトリです
これにより、「grep」の出力が読みにくくなる可能性があります。ここには 2 つの解決策があります:
サブディレクトリの検索を明示的に要求する: grep -r
またはサブディレクトリを無視する: grep -d stop
大量の出力がある場合は、それを 'less' にパイプして読み取ることができます:
$ grep magic /usr/src/Linux/Documentation/* | less
こうすることで、より便利に読むことができます。

注意すべき点は、ファイルのフィルタリング方法を提供する必要があることです (すべてのファイルを検索するには * を使用します)。忘れた場合、「grep」はプログラムが中断されるまで待機します。この問題が発生した場合は、 を押して再試行してください。

以下にいくつかの興味深いコマンドラインパラメータがあります:
grep -i パターンファイル: 大文字と小文字を区別せずに検索します。デフォルトでは大文字と小文字が区別されます。
grep -l パターン ファイル: 一致するファイル名のみがリストされます。
grep -L パターン ファイル: 一致しないファイル名がリストされます。
grep -w パターン ファイル: 文字列の一部ではなく、単語全体にのみ一致します。 (「magical」ではなく「magic」に一致するなど)、
grep -C 数値パターン ファイル: 一致するコンテキストは [number] 行をそれぞれ表示します、
grep pattern1 | pattern2 files: pattern1 または pattern2 に一致する行を表示します、
grep pattern1 ファイル | grep pattern2: pattern1 と pattern2 の両方に一致する行を表示します。

grep -n パターン ファイルで行番号情報を表示

grep -c パターン ファイルで合計行数を検索

検索用の特殊な記号もいくつかあります:
< 単語の先頭と末尾をマークします。それぞれ 。
例:
grep man * は 'Batman'、'manic'、'man' などに一致します。
grep ' grep '' は 'man' のみに一致し、'Batman' や 'manic' などの他の文字列には一致しません。
‘^’: 一致した文字列が行の先頭にあることを意味します,
’$’: 一致した文字列が行の末尾にあることを意味します,



Grepコマンド使用リスト

1. パラメータ:
-I: 大文字と小文字を無視します
-c: 一致する行の数を出力します
-l: 複数のファイルから一致する項目を検索します
-v: 一致する項目を含まない行を検索します
-n: 行と文字を出力します一致する項目を含む行識別子

2、RE (正規表現)
正規表現内の特殊文字の本来の意味を無視する
^ 正規表現の先頭行と一致する
$ 正規表現の最後の行と一致する
< ;正規表現
に一致する行> 正規表現
[ ] に一致する行の末尾 ([A] など)、つまり、A は [A-Z] などの要件を満たします。つまり、A、B、C Z までのすべての要件が満たされます
すべての単一文字
* すべての文字、長さは 0 にすることができます

3、たとえば
# ps -ef grep in.telnetd
root 19955 181 0 13:43:53 ? 0:00 in.telnetd

# more size.txt サイズ ファイルの内容
b124230
b034325
a081016
m7187998
m7282064
a022021
a06 1048
m9324 822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345

# more size.txt | grep '[a-b]' 範囲 ([A-Z] など)、つまり A、B、C から Z がすべて要件を満たしています
b124230
b034325
a081016
a022021
a061048
b103303
a013386
b044525
# more size.txt grep '[a-b]'* 3
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345

# more size.txt grep ' b' シングル[A] などの文字、つまり A は要件を満たします
b124230
b034325
b103303
b044525
# more size.txt '[bB]'
b124230
b034325
b103303
b044525
B081016
B103303
BADc2345

# grep 'root' /etc/group
root::0:root
bin::2:root,bin,daemon
sys::3:root,bin,sys,adm
adm::4:root, adm、デーモン
uucp::5:root,uucp
mail::6:root
tty::7:root,tty,adm
lp::8:root,lp,adm
nuucp::9:root,nuucp
daemon ::12:root,daemon

# grep '^root' /etc/group は正規表現の開始行と一致します
root::0:root

# grep 'uucp' /etc/group
uucp: :5: root,uucp
nuucp::9:root,nuucp

# grep 'uucp::5:root,uucp

# grep 'root$' /etc/group に一致正規表現
root::0:root
mail::6:root

# more size.txt grep -i 'b1..*3' -i : 無視大文字

b124230
b103303
B103303

# more size.txt | grep -iv 'b1... 2
a013386
b044525
m8987131
B081016
M45678
BADc2345

# more size.txt | 'b1..*3'
1: b124230
9:b103303
15:B103303

# grep '$' /etc/init.d/nfs.server wc -l
128
# grep '$' /etc/init.d/nfs.server | -l は、正規表現内の特殊文字の元の意味を無視します

15
# grep '$' /etc/init .d/nfs.server
case "$1" in
>/tmp/sharetab.$$
[ " x$fstype" != xnfs ] &&
echo "$patht$rest$fstypet$optst$desc"
> ;>/tmp/sharetab.$$
/usr/bin/touch -r /etc/dfs/sharetab /tmp/sharetab.$$
/usr/bin/mv -f /tmp/sharetab.$$ /etc /dfs/sharetab
if [ -f /etc/dfs/dfstab ] && /usr/bin/egrep -v '^[ ]*(#|$)'
if [ $startnfsd -eq 0 -a -f /etc /rmmount.conf ] &&
if [ $startnfsd -ne 0 ] then
elif [ ! _INIT_RUN_LEVEL" ]; then
while [ $wtime -gt 0 ]; do
wtime=`expr $wtime - 1 `
if [ $wtime -eq 0 ]; then
echo "Usage: $0 { start stop }"

# さらに size.txt

テスト ファイル
それらはファイルです
終わり

# grep 'the' size.txt
テスト ファイル
それらはファイルです

# grep 'theテスト ファイル
それらはファイルです

# grep 'the>size.txt
テスト ファイル

# grep '' size.txt
テストファイル

# grep '<[Tt]he>' size.txt
テストファイル

============= = ================================================ = ===

1、はじめに
この php?name=%C3%FC%C1%EE" onclick="tagshow(event)" class="t_tag">このコマンドは元々 php?name=%C3%FC%C1%EE" onclick="tagshow(event)" class="t_tag">Command/Filter:
g/re/p - - global - 正規表現 - でした。 print.
基本形式
grepパターン[ファイル...]
(1)grep検索文字列[ファイル名]
(2)grep正規表現[ファイル名]
ファイル位置で出現するすべてのパターンを検索します。パターンは、検索する文字列または正規表現
注: 検索する文字列を入力するときは二重引用符 / を使用することをお勧めします。パターン マッチングに正規表現を使用する場合は、一重引用符

2、grep オプション
の使用に注意してください。 -c は一致する行数のみを出力します
-i は大文字と小文字を区別しません (単一文字の場合)
-n は一致する行番号を表示します
-v は一致するテキストを含まない行を表示しません 行はあります
-s は表示しませんエラーメッセージ
-E は拡張正規表現を使用します
その他のオプションについては、man grep

3、一般的に使用される grep の例

(1) 複数のファイルのクエリ
grep "sort" doc #ファイル名一致を参照してください

。 (2) 行一致:一致した行数を出力
grep -c "48" data.doc #文書内の48文字を含む行数を出力

(3) 一致した行と行数を表示
grep -n " 48" data.doc #48に一致する行と行番号を全て表示

(4) 一致しない行を表示
grep -vn "48" data.doc #48を含まない行を全て出力

(4) 表示一致しない行
grep -vn "48" data.doc #48 を含まない行をすべて出力

(5) 大文字と小文字を区別
grep -i "ab" data.doc #ab を含む行をすべて出力 または の行Ab の文字列

4、正規表現の適用

(1) 正規表現の適用 (注: 正規表現は一重引用符で囲むのが最善です)
grep '[239].' data .doc #全行を出力2、3、または 9 で始まり 2 つの数字です

(2) 不一致テスト
grep '^[^48]' data.doc #48 で始まる不一致行 行

(3) は拡張パターン マッチングを使用します
grep - E '219|216' data.doc

(4) ...
これには、実践での継続的な適用と要約、および正規表現の習熟が必要です。

5、クラス名を使用します
国際パターンに一致するクラス名を使用できます:
[[:upper:]] [A-Z]
[[: lower:]] [a-z]
[[:digit:]] [ 0-9]
[[:alnum:]] [0-9a-zA-Z]
[[:space:]] スペースまたはタブ
[[:alpha:]] [a-zA-Z]

( 1)
grep '5[[:upper:]][[:upper:]]' data.doc を使用して #5 で始まり 2 つの大文字で終わる行をクエリします


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