linux grep/egerp(毎日1令の12)


linux grepコマンド
1.作用:   Linuxシステムのgrepコマンドは、正規表現を使用してテキストを検索し、一致する行を印刷する強力なテキスト検索ツールです.grepのフルネームはGlobal Regular Expression Printで、グローバル正規表現バージョンを表し、その使用権限はすべてのユーザーです.
2.パラメータ:
   具体:man grep
   主なパラメータ:
       
-c:         。
-I:       (       )。
-h:            。
-l:                   。
-n:         。
-s:                 。
-v:             。
   
   pattern正規表現の主要パラメータ:
\:                  。
^:           。
$:            。
\<:             。
\>:            。
[ ]:    , [A] A     。
[ - ]:  , [A-Z], A、B、C   Z      。
。:       。
* :   ,     0。
^
アンカー行の開始例:'^grep'はgrepで始まるすべての行に一致します.
$
アンカー行の終了:'grep$'はgrepで終わるすべての行に一致します.
改行しない文字を一致させるには、「gr.p」がgrに一致した後、任意の文字をつなぎ、pになります.

前の文字を0文字以上、たとえば'*grep'がすべてのスペースに一致した後、grepに続く行を一致させます..*任意の文字を表すために一緒に使用します.
[]
「[Gg]rep」などの指定範囲内の文字を一致させ、Grepとgrepを一致させます.
[^]
指定された範囲外の文字を一致させます.たとえば、'[^A-FH-Z]rep'一致には、A-RとT-Zのアルファベットの先頭が含まれず、repの行に続いています.
\(..\)
タグ一致文字、例えば'(love)'、loveは1とタグ付けされます.
\<
アンカーされた単語の開始:'
\>
「grep>」などの単語の終わりをアンカーし、grepで終わる単語を含む行をマッチングします.
x\{m\}
繰り返し文字x,m回,例えば,'0{5}'は5つのoを含む行に一致する.
x\{m,\}
繰り返し文字xは、少なくともm回、例えば、「o{5,}」が少なくとも5つのoの行に一致する.
x\{m,n\}
繰り返し文字xは、少なくともm回、例えば「o{5,10}」が5~10個のoの行に一致するようにn回以下である.
\w
一致文字と数字文字、すなわち[A-Za-z 0-9]、例えば「Gw*p」は、Gの後に0個以上の文字または数字文字、次いでpと一致する.
\W
wの反転形式は、ポイント句点など、1つ以上の非単語文字に一致します.
\b
単語ロック記号、例えば'bgrepb'はgrepにのみ一致します.
3.egrepとgrep-E用のメタ文字拡張セット

1つ以上の前の文字を一致させます.例えば、'[a-z]+able'は、loveable、enable、disableなど、1つ以上の小文字に一致するableの列です.
?
前の文字を0文字以上一致させます.例えば、「gr?p」はgrに一致した後、1つまたは文字がなく、pの行に続く.
a|b|c
aまたはbまたはcに一致します.例えばgrep|sedマッチングgrepまたはsed
()
パケットシンボル、例えば、love(able|rs)ov+はloveableまたはloversに一致し、1つ以上のovに一致する.
x{m},x{m,},x{m,n}
作用はx{m},x{m,},x{m,n}と同じである.
3.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」と書けばよい.
4.grepコマンド複雑なインスタンスを使用して、'/usr/src/Linux/Doc'ディレクトリの下で文字列'magic'付きファイルを検索していると仮定します:$grep magic/usr/src/Linux/Doc/*sysrq.txt:*How do I enable the magic SysRQ key?sysrq.txt:*How do I use the magic SysRQ key?ここで、ファイル’sysrp.txt’にはこの文字列が含まれており、SysRQの機能について議論されている.デフォルトでは、「grep」は現在のディレクトリのみを検索します.このディレクトリの下にサブディレクトリがたくさんある場合、「grep」はgrep:sound:Isa directoryとしてリストされます.これにより、「grep」の出力が読みにくくなる可能性があります.ここでは、サブディレクトリの検索を明確に要求する2つの方法があります.grep-rまたはサブディレクトリの無視:grep-d skip出力が多い場合は、パイプを介して「less」に移動して読むことができます.$grep magic/usr/src/Linux/documentation/*|lessを参照すると、より便利に読むことができます.
ファイルのフィルタリング方法(すべてのファイルを検索する場合は*)を指定する必要があります.忘れた場合は、プログラムが中断されるまで「grep」が待っています.このような状況に遭遇した場合は、を押してから試してください.
次の興味深いコマンドラインパラメータ:grep-i pattern files:大文字と小文字を区別せずに検索します.デフォルトでは大文字と小文字を区別し、grep-l pattern files:一致するファイル名のみをリストし、grep-L pattern files:一致しないファイル名をリストし、grep-w pattern files:文字列の一部ではなく単語全体を一致させ、「magic」ではなく「magical」を一致させる)、grep-C number pattern files:一致するコンテキストはそれぞれ[number]行を表示します.grep pattern 1|pattern 2 files:pattern 1またはpattern 2に一致する行を表示します---------テスト後はできません.解決策grep pattern 1 files|grep pattern 2:pattern 1とpattern 2に一致する行を表示します.
grep -n pattern files  行番号情報を表示
grep -c pattern files  を選択します.
ここには、検索に使用する特殊な記号もあります.<と>は、単語の開始と終了をそれぞれ表示します.例えば、grep man*は「Batman」、「manic」、「man」など、grep「」は「Batman」や「manic」などの他の文字列にのみ一致する.行の先頭に一致する文字列、$:行の末尾に一致する文字列を指します.
5:grep贈呈例:
(1)正規表現の適用(注意:正規表現を一重引用符で囲むことが望ましい)   grep '[239].' data.doc      #2,3または9で始まるすべての行(2)が一致しないテストを出力します.   grep '^[^48]' data.doc      #不一致行頭が48の行(3)拡張モードで一致   grep -E '219|216' data.doc
(4)クラス名を用いて国際モードマッチングのクラス名を用いることができる:[:upper:]]  [A-Z][[:lower:]]   [a-z][[:digit:]]   [0-9][[:alnum:]]   [0-9a-zA-Z][[:space:]]   スペースまたはtab[:alpha:]]  [a-zA-Z]使用
   grep '5[[:upper:]][[:upper:]]' data.doc     #クエリーが5で始まる2つの大文字で終わる行
(5)、
# more size.txt
the test file
their are files
The end
# grep 'the' size.txt
the test file
their are files
# grep '\<the' size.txt
the test file
their are files
# grep 'the\>' size.txt
the test file
# grep '\<the\>' size.txt
the test file
# grep '\<[Tt]he\>' size.txt
the test file
linux grepを使用して、印刷一致する次の数行または前後の数行のコマンドを表示します.
linuxシステムではgrepを利用してマッチングの上下数行を印刷します
パターンをマッチングしたいだけの上下数行であればgrepは実現できる.
$grep-5'partern'inputfile//一致行の前後5行を印刷
$grep-C 5'partern'inputfile//一致行の前後5行を印刷
$grep-A 5'partern'inputfile//一致行の後5行を印刷
$grep-B 5'partern'inputfile//一致行の最初の5行を印刷
more dbLog.20130927 |grep -A 5 fund.getupdateFundManInfo
it動力テストは以下の通りです:mysqlスローログのipアドレスが192.168.0.10で送信されたSQL文の後ろの3行を表示します
tail -50/usr/local/mysql/data/sql-slow.log |grep -3 '192.168.0.10'
解决:grep pattern 1|pattern 2 files:pattern 1またはpattern 2に一致する行を表示します.
grep -E pattern1 | pattern2 file
または
egrep pattern1 | pattern2 file
[root@pacteralinux greptest]# env|egrep "USER|MAIL|LOGNAME|PWD"
USER=root
MAIL=/var/spool/mail/root
PWD=/root/Desktop/test/greptest
LOGNAME=root
OLDPWD=/root/Desktop/test
[root@pacteralinux greptest]# env|grep -E "USER|MAIL|LOGNAME|PWD"
USER=root
MAIL=/var/spool/mail/root
PWD=/root/Desktop/test/greptest
LOGNAME=root
OLDPWD=/root/Desktop/test
[root@pacteralinux greptest]#
grepとegrepの違い:
*egrep:grepの拡張バージョンのために、従来のgrepではできない操作や不便な操作を多く改良しました.例えば、grepの下ではサポートされていませんか?+の2種類のmodifierと、egrepは可能です.-grepはa|bや(abc|xyz)のような「あるいは1」の対比をサポートしていませんが、egrepは可能です.-grepは{n,m}を処理する際に{と}で処理する必要がありますが、egrepは必要ありません.fgrep:RE処理を行わず、式は一般文字列処理のみを行い、すべてのmetaは機能を失う.