04、grepの正規表現

1、grepのプログラム

    grepのSEDのawk - Linuxテキスト処理三銃士は、下の持っています

    グレップ:テキスト行のフィルタリングツール

    SED:テキスト行エディタ(ストリームエディタ)

    AWK:レポートジェネレータ(本発明の組成物の出力形式)

 

    グレップ

        grepのegrepのfgrepは、線モード(パターン)マッチングのために使用される:それは3つのコマンドを含んでいます

         egrepの= gerp -E //拡張正規表現のマッチングを使用

        FAST =グレップのfgrepは、ワイルドカードに一致する//使用ファイル

        一致する正規表現を使用して*をGrepのデフォルトのテキスト*

    grepの使用:
        grepの[オプション] ... PATTERN [ファイル名]

   

   グレップの共通オプション- オプション
            - Eは、拡張正規表現(ERE)の使用をサポートしています(正規表現)が
           さえsedの正規表現エンジンのすべての言語が同じではありません(Perlの正規表現言語の検索エンジンを使用して-P grepのAWKない正規表現を使用したものと同じエンジン)
            - Iは、サイズを無視
            - Vは、抗から選択され、
            - Oのみコンテンツを一致出力(デフォルト出力は、ラインに適合されている)
            --color = 自動シンタックスカラーリング
            - Nライン数
            - W   一致固定された単語

    正規表現PATTERN--
        クラスの文字を表すために、一部の特殊文字通過した後、実行するコマンドの前に、あなたは、それ自体で意味を特殊文字を使用している場合、それは\エスケープ必要があります;:機能を

        レビュー:ファイルのワイルドカード(グロブ)
            * [] [^]?

        図1に示すように、文字一致
            任意の1つの文字。?
            []文字の範囲のいずれかの
            任意の文字の範囲外[^]
            文字クラス:[:桁:] [: alnum:] [:アルファ:] [下部:] [: アッパー:] [:スペース:] [:PUNCT:]
        2、試合の数は、
            *何倍に直前の文字がゼロに一致する
            \?ゼロ1に先行する文字一致
            + \をn倍に先行する文字1を一致
            文字m回の前方に配置\ {m個の\}
            \を{7 \} AAAAAAA
            \ {M、N \}は先行文字Mに一致n番目のに
            \ {0、N \}ゼロ[0 n倍にか、先行文字に一致?(!ない)}
            \ {M、\}少なくともメートル直前の文字と一致する
        3、アンカーの位置を
            最初の行アンカー^
            ラインの$アンカー終わり
            ^ [[:スペース:]] * $ 空白行の
            \ bのアンカー・ワード第一及び固定接尾辞
            \>アンカーサフィックス
            \ <最初の単語アンカー
            \ <ルート\>応援
        、4をグループ化し
            、全体として私たちが望むABC * abccccのABCを
            \(ABC \)* ABCABCABC abcccc:\(\)の実施例
            の特性をグループ化**:デフォルトでは、Linuxシステム... 1 \ 2 \ 3 \可変パケット表現変数を指定します(後方参照)

            \(\(秋の\の始まり)\を通過した)、\(香港\)はまだ落ち着かないです。違法な集会でのマルチゾーン、\(暴力\)のデモの破壊行為、道路、またはレーザー、警察官を暴行レンガ、火炎瓶を投げ、そしていくつかさえ公然と殴ら本土の観光客や記者を遮断しました。奨励アップグレードデモ参加者、「香港で抗混乱、」舞台裏力でゆっくりと浮上しています。

            例:\(AB + \(XYの \)* \) 。\ = 1 + AB&\(XY \)* \ 2 = XY
                abbbbbxyxyxyabxy

        拡張正規表現:追加
            [標準正規表現の\を除去することができる]
            (後)参照1 \ 2 \ 3 \ ...:グループ
            または:|
                例:はgrep -E「(SVM | VMS ) 「/ procの/ cpuinfoを//は、CPUの仮想化機能を見ます

练习:
1、显示/proc/meminfo文件中大小s开头的行
    grep -i "^s" /proc/meminfo
2、显示/etc/passwd文件中不以/bin/bash结尾的行
    grep -v "/bin/bash$" /etc/passwd
3、显示/etc/passwd文件中UID号最大的用户的用户名
    sort -n -t: -k3 /etc/passwd | tail -1 | cut -d: -f1
4、如果用户root存在,显示其默认的shell程序
    grep "^root\>" /etc/passwd &> /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7 
    id root &> /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7 
5、找出/etc/passwd中的两位或三位数
    grep "[0-9]\{2,3\}"  /etc/passwd
        -w   //匹配固定单词 
        \<[[:digit:]]\{2,3\}\>
        \b[0-9]\{2,3\}\b
6、显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面为非空白字符的行
    grep "^[[:space:]]\+.*[^[:space:]]$" /etc/rc.d/rc.sysinit
7、找出”netstat -tan”命令的结果中,以“LISTEN”后跟0、1或多个空白字符结尾的行
    netstat -tan | grep "LISTEN[[:space:]]*$"
8、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin):而后找出/etc/passwd文件中用户名同shell名的行
    useradd bash           /bin/bash
    useradd testbash
    useradd basher
    useradd -s /sbin/nologin nologin
    grep "\(^[[:alnum:]]\+\>\).*\1$" /etc/passwd
9、IP地址如何匹配?
    ip地址:
        0-255.0-255.0-255.0-255
        0-255
        2 0-4 0-9  2[0-4][0-9]
        2 5 0-5    25[0-5]
        1 0-9 0-9  1[0-9][0-9]
        0 0-9 0-9  [0-9][0-9]
        0 0    0-9  [0-9]
    
grep -owE "((([0-9])|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-9])|([1-9][0-9])|(1[0-9]{,2})|(2[0-4][0-9])|(25[0-5])){1}[[:space:]]"

 

 

 

 

おすすめ

転載: www.cnblogs.com/cnxy168/p/11409019.html