grepコマンドでlinux

まず、grepコマンドを紹介:

グレップ(グローバル検索正規表現(RE)と、LINE OUT包括的な検索正規表現を印刷して、ラインをプリントアウト)は、強力なテキスト検索ツールである、あなたは、正規表現の検索テキストを使用し、一致する行を印刷することができますアウト。これは、最も一般的に使用されるLinuxの「テキスト処理ツールの一つ」と総称として知られているのsed、awkのLinuxのである「三銃士」。

オプション:

  • -aまたは--text  :バイナリデータを無視しないでください。
  • -A <行数>または--afterコンテキスト= <表示行数>  :その後、パターン外の行に沿ったテンプレートを表示することに加えて、及び行の内容を表示します。
  • -b-offsetまたは--byte  :行の最初の文字の数をマークし、ラインスタイルの遵守を証明する前。
  • -B <行数>または--beforeコンテキストを= <表示行数>  :ラインパターンが外部満たし、そして前の行の内容を表示する表示に加えて。
  • -cや--count  :列スタイルの番号と一致して算出しました。
  • -C <行数> --context = <行数を表示>や< -行数>  :満たすより線のスタイル、および行前の表示内容を表示することに加えて。
  • -d <アクション>または--directories = <アクション>  :ディレクトリではなくファイルで検索したいときに指定した場合、あなたは、このパラメータを使用する必要がありそうでない場合はgrepコマンドは、情報を返すと行動を停止します。
  • -e <スタイルテンプレート>または--regexp = <テンプレートパターン>  :スタイルの内容として文字列を指定したファイルを見つけます。
  • または-E-regexpには、--extended  :表現のスタイルは、正の長時間使用です。
  • -f <ルールファイル>または--file = <ルールファイル>  :ルールファイルを指定し、一つ以上の規則的パターンを含むので、コンテンツファイルのルールの条件が満たされている見つけるためにgrepをその内容、規則的なパターンの各ラインのためのフォーマット。
  • -F正規表現-または--fixed  :固定文字列のリストとして見られたスタイル。
  • -G-正規表現または--basic  :通常の使用のような表記のスタイル。
  • -hファイル名または--no  :ラインスタイルの遵守を証明する前に、行のファイル名が所属示すものではありません。
  • -Hまたはファイル名の--with  :前ラインスタイルの遵守を証明するため、それが属する行のファイル名を表します。
  • ケース- Iまたは--ignore  :文字の大文字小文字の違いを無視します。
  • -l-とのマッチまたは--fileは  :ファイルのファイル名の内容が指定したスタイルと一致して示しています。
  • -L-なしのマッチまたは--filesは  :指定したスタイルに準拠していないファイルのファイル名の内容を示しています。
  • 数-n-または--line  :行番号の列数をマークし、ラインスタイルの遵守を証明する前。
  • マッチング-oまたは--only  :PATTERNのみ一致する部分。
  • -qまたは--quietまたは--silent  :すべての情報は表示されません。
  • --recursiveまたは-r  :このパラメータの効果は、同じパラメータを指定し、「-d再帰」されます。
  • -s -メッセージや--no  :エラーメッセージなし。
  • -vマッチまたは--revertは  :テキストに一致するすべての行を表示します。
  • -Vまたは--version  :バージョン情報を表示します。
  • -w-正規表現または--wordは  :のみマッチング全単語列を示しています。
  • --line-regexpに-x  :列の列を持つ唯一の完全な順守を表示します。
  • -Y :このパラメータの効果が指定され、同じパラメータ「-i」されます。

例:

利便性のために、私たちは次のように読み込む、テストファイルtest.txtのを準備しました

 私たちはハローの文字列を含む行を検索したい場合は、次のコマンドを使用することができます。

 上図は、ライン「こんにちは」の文字列が含まれているあるtest.txtファイル内を検索するgrepコマンドを使用するコマンドを表し、ハローの文字列を含む行をプリントアウト。

 デフォルトでは、grepが、それは内容から大文字と小文字を区別しない検索の場合は、次のように-iは、パラメータを追加することができます探していた、大文字と小文字が区別されます:

 それは実験のために使用されているので、そのラインの数十万人ほどの多くのルーチンワークで数十ラインに至るまで、比較的小さな、一般的には、ファイルの内容で記述されたテストファイルの内容、そして私たちは、私たちが望むことを確認します内容を検索する方法このファイルの数行を行う必要がありますか?

以下に示すよう-Nプラスパラメータは、上記の問題を解決することができます。

-nパラメータによって示されるようにコンテンツを取得する行数を表示することができます。

我々はクロール何を含んでおり、行はそれらを含むその気にしないでくださいどのように多くの行を知りたい場合は、我々は予選の行数を取得するには、次のコマンドを使用することができます。

 

 時々、私たちはそのようなオプションは、この問題を解決することができ、この時間「の文字列が含まれていないこと」「-v」発見として検索を逆にする必要があります

 の「テスト」を含まない文の上のテキストの行をご覧ください。

某些场景下,我们需要同时从多个目标中匹配,什么意思呢?来,我们看下示例就知道了

 上例子我们同时检索了包 hello 和 abc字符串,包含这两个字符串中的每一行都被打印出来,没错,就像上面的图例一样,使用“-e”选项可以同时匹配多个目标,多个目标存在“或”关系,即匹配到其中的任意一个都算作匹配成功。

在写脚本时,你可能只是想要利用grep判断文本中是否存在某个字符串,你只关心有没有匹配到,而不关心匹配到的内容,你只关心有,或者没有,这时,我们可以使用grep的静默模式,示例如下。

  当使用"-q"选项时,表示grep使用静默模式,静默模式下grep不会输入任何信息,无论是否匹配到指定的字符串,都不会输出任何信息,所以,我们需要配合"echo $?"命令,查看命令的执行状态,如果返回值为0,证明上一条grep命令匹配到了指定的字符串,如果返回值为1,则证明上一条grep命令没有匹配到指定的字符串,就像上图示例中显示的那样,静默模式下,grep没有输出任何信息,当我们在test.txt文本中查找"test"字符串时,可以匹配到结果,当在文本中查找"1111111111"字符串的时候,没有匹配到结果,所以,我们只关心有没有匹配到指定字符时,可以使用"-q"选项,但是需要配合"echo $?"命令查看执行状态。

grep还有很多其它选项,我只是列举了常用的一些选项,其它选项可以自行练习。

其实,除了grep命令,其实还有egrep命令,还有fgrep命令(fast grep),它们有各自的特点。

grep:支持基本正则表达式

egrep:支持扩展正则表达式,相当于grep -E

fgrep:不支持正则表达式,只能匹配写死的字符串,但是速度奇快,效率高,fastgrep

【参考资料:http://www.zsythink.net/archives/1733

 

おすすめ

転載: www.cnblogs.com/sxFu/p/11777467.html
おすすめ