Linuxの中のgrepコマンドを深く理解する


紹介する
Linuxシステムにおけるgrepコマンドは、正規表現を使ってテキストを検索し、該当する行を印刷する強力なテキスト検索ツールです。grepフルネームはGlobal Reglar Expression Printで、グローバル正規表現バージョンを表し、その使用権限はすべてのユーザです。

grep [-acinv] [--color=auto] '     ' filename 
パラメータ:
    -a:binaryファイルをtextファイルでデータを検索する
    -c:「文字列の検索」を見つけた回数を計算します。
    -i:大文字と小文字の違いを無視して、大文字と小文字を同じと見なす
    -n:ついでに行番号を出力します。
    -v:逆選択とは、文字列の内容を検索していない行を表示します。
    -l:マッチングしたファイルのみを表示し、具体的な内容は表示されません。
    -f<ルールファイル>:ルールファイルを指定します。その内容は一つ以上の規則スタイルを含んでいます。grepに規則条件に合ったファイル内容を検索させて、フォーマットは各行の規則スタイルです。  
例:

#    /etc/man.config   MANPATH     ,            
grep --color=auto MANPATH /etc/man.config

# ls -l        file(      )     
ls -l | grep -i file

#    '/var/log/messages'      "Aug" 
grep Aug /var/log/messages 

#    '/var/log/messages'    "Aug"    
grep ^Aug /var/log/messages 

#   '/var/log/messages'             
grep [0-9] /var/log/messages 

#    '/var/log'             "Aug" (    )
grep Aug -R /var/log/* 

#        'energywise'    
grep 'energywise' *      

#             'energywise'    
grep -r 'energywise' *  

#      
ps -ef|grep svn

#             ,  test.txt      test2.txt              
cat test.txt | grep -f test2.txt
grepと正規表現:
文字類の検索:testとtasteの2つの単語を探していたら、共通の「t?st」があることが分かりました。この時、私はこのように探しに来ました。

grep -n 't[ae]st' regular_express.txt
実は[]の中には何バイトがあっても、彼は『一つ』のバイトを代表しています。だから、上の例で説明しました。私が必要な文字列は『tast』か『test』です。
文字類の逆選択[^]:もしooがある行を検索したいなら、ooの前にgがありたくないです。以下の通りです。

grep -n '[^g]oo' regular_express.txt
文字類の連続:また、仮に私がooの前に小文字バイトが欲しくないとしたら、

grep -n '[^a-z]oo' regular_express.txt
一組の集合バイトで、例えば大文字の英語/小文字の英語/数字などが連続していれば、[a-z]、[A-Z]、[0-9]などを使って書くことができます。ふふっ!彼を全部一緒に書いて、[a-zA-Z 0-9]にします。
私たちは数字がある行を取得したいです。

grep -n '[0-9]' regular_express.txt
行頭と行末のバイト^
行頭文字:theを最初の行にしたいなら?この時はバイトを使わなくてはいけません。私たちはこのようにしてもいいです。

grep -n '^the' regular_express.txt
書き出しは小文字バイトの行のリストですか?このようにしてもいいです

grep -n '^[a-z]' regular_express.txt
最初は英語で書きたくないです。

grep -n '^[^a-zA-Z]' regular_express.txt
^記号は、文字類記号(括弧[]内と外では違います。内では「逆選択」、外では行頭に位置するという意味です。
行末が小数点(.)で終わる行:

grep -n '\.$' regular_express.txt
特に注意してください。小数点は他の意味を持っていますので、その特殊な意味を解除するためには変換記号()を使用しなければなりません。

#     
grep -n '^$' regular_express.txt
任意のバイトと重複バイト*
    . (小数点):「必ず任意のバイトがある」という意味です。
    * (星号):「前の文字を繰り返し、0から無限まで何回も」という意味で、組み合わせの形です。

#     g??d    ,        ,     g      d ,      :
grep -n 'g..d' regular_express.txt

#       o      ,『o*』    :『         o      』
grep -n 'ooo*' regular_express.txt

#            g,     g            o ,    gog, goog, gooog....   
grep -n 'goo*g' regular_express.txt

#   g     g     ,         
grep -n 'g.*g' regular_express.txt

#     o    ,   :
grep -n 'o\{2\}' regular_express.txt

#   g     2   5   o ,       g    ,     :
grep -n 'go\{2,5\}g' regular_express.txt

#2   o     goooo....g  ?      goo*g ,   
grep -n 'go\{2,\}g' regular_express.txt

#           
grep 'linux' test.txt test2.txt 
締め括りをつける
以上はLinuxの中でgrep命令の全部の内容についてです。本文の内容は皆さんの学習や仕事に一定の助けを与えてほしいです。もし疑問があれば、メッセージを残して交流してもいいです。