シェルスクリプトの正規表現三銃士の1(grepを、egrepの)

シェルスクリプトの正規表現三銃士の1(grepを、egrepの)

正式のシェルスクリプト

正規表現は、三銃士の一つであります。grep

我々はテストプロファイルとして役に立たない練習を取る前に、1.正規表現を学び

[root@localhost ~]# vim chen.txt

#version=DEVEL
 System authorization information
auth --enableshadow --passalgo=sha512# Use CDROM installation media
cdrom
thethethe
THE
THEASDHAS
 Use graphical install
graphical
 Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
wood
wd
wod
woooooooood
124153
3234
342222222
faasd11
2
ZASASDNA
short
shirt

2.特定の文字を探します

「-Vn」を反転選択。「」文字列が含まれていないことが判明、それは「-vn」オプションgrepコマンドによって達成する必要があります。
-n「の表示行番号を表し、
「-i」、大文字と小文字を区別しないで表し
、コマンドの実行を、文字のマッチング基準を満たす、赤にフォントの色の変更

[root@localhost ~]# grep -n 'the' chen.txt
6:thethethe
11:# Run the Setup Agent on first boot
[root@localhost ~]# grep -in 'the' chen.txt
6:thethethe
7:THE
8:THEASDHAS
11:# Run the Setup Agent on first boot
[root@localhost ~]# grep -vn 'the' chen.txt
1:#version=DEVEL
2:# System authorization information
3:auth --enableshadow --passalgo=sha512
4:# Use CDROM installation media
5:cdrom
7:THE
8:THEASDHAS
9:# Use graphical install
10:graphical
12:firstboot --enable
13:ignoredisk --only-use=sda
14:wood
15:wd
16:wod
17:woooooooood
18:124153
19:3234
20:342222222
21:faasd11
22:2
23:ZASASDNA
24:
short
shirt

3.括弧「[]」の文字の集合を見つけるために
あなたが「シャツ」と2つの文字列が2列で「SH」と「RT」が含まれて見つけることができる「短い」を見つけたいとき。同時に「シャツ」と「ショート」2つの文字列を検索するには、次のコマンドを実行します。「[]」にかかわらず、文字の数は、「[IO]」一致「I」または「O」を意味することを、文字のみを代表するものです。

[root@localhost ~]# grep -n 'sh[io]rt' chen.txt  //过滤short或shirt中都有io集合字符
24:short
25:shirt

重複を検索する場合は単一の文字「○○」が含まれ、単に次のコマンドを実行します。

[root@localhost ~]# grep -n 'oo' chen.txt 
11:# Run the Setup Agent on first boot
12:firstboot --enable
14:wood
17:woooooooood

文字列の「W」が先行していない検索「OO」、逆を選択して設定のみの文字は、「[^]」このオブジェクトは、このような「グレップの-n「[^ W] oo'test.txt」の実装として、達成された場合コマンドは「○○が」テキストtest.txtというの文字列に「W」が先行していない表し検索

[root@localhost ~]# grep -n '[^w]oo' chen.txt //过滤w开头oo的字符串
11:# Run the Setup Agent on first boot
12:firstboot --enable
17:woooooooood

見出さ「woood」および「wooooood」マッチング規則はまた、両方を含む「W」コマンドの実行結果と一致しています。実際には、太字の行に一致基準の結果から分かるように、これらの結果は、「#1 woood位」「O」の前に「OOO」、及び「○○」に太字で示されている、こととすることができます一致ルール。同様に、「#woooooood位」はまた、マッチング規則と一致しています。
所望の「○○」は、小文字の前に存在する場合、「grepの-N「[^ AZ]を使用することができる oo'test.txt」 コマンドを実装されている、請求『AZ』は『AZ』〜図小文字、大文字を表します。

[root@localhost ~]# grep -n '[^a-z]oo' chen.txt 
19:Foofddd

行番号が「はgrep -N 『[0-9]』のtest.txt」コマンドによって達成することができる認めます

[ルート@ localhostの〜]#はgrep -n '[0-9]' chen.txt
3:AUTH --enableshadow --passalgo = SHA512
20:124153
21:3234
22:342222222
23:faasd11
24:2

ライン歌「^」と行末文字「$」検索

[root@localhost ~]# grep -n '^the' chen.txt
6:thethethe

クエリは、小文字は「1」のルールによってフィルタリングすることができますライン

[root@localhost ~]# grep -n '^[a-z]' chen.txt
3:auth --enableshadow --passalgo=sha512
5:cdrom
6:thethethe
10:graphical
12:firstboot --enable
13:ignoredisk --only-use=sda
14:wood
15:wd
16:wod
17:woooooooood
18:dfsjdjoooooof
23:faasd11
26:short
27:shirt

クエリは大文字で始まります

[root@localhost ~]# grep -n '^[A-Z]' chen.txt
7:THE
8:THEASDHAS
19:Foofddd
25:ZASASDNA

クエリは、文字「[a-zA-Z]の」ルールで始まる行を使用しない場合。

[root@localhost ~]# grep -n '^[^a-zA-Z]' chen.txt
1:#version=DEVEL
2:# System authorization information
4:# Use CDROM installation media
9:# Use graphical install
11:# Run the Setup Agent on first boot
20:124153
21:3234
22:342222222
24:2

内部および外部のシンボルに「[]」のシンボルは、逆選択を表しに、同じではありません「^」文字セット要素を記号「[]」、外側の「[]」の記号は、行の位置を表しています。あなたが行の末尾に特定の文字を検索したい場合は逆に、あなたは「$」のWebサイトを使用することができます。たとえば、次のコマンドは、行の末尾の小数点(。)にクエリを達成することができます。小数点(。)は、正規表現では、メタ文字なので(後述)ので、ここの文字が通常の文字に特別な意味を変換している「\」エスケープ文字を使用する必要があります。

[root@localhost ~]# grep -n '\.$' chen.txt
5:cdrom.
6:thethethe.
9:# Use graphical install.
10:graphical.
11:# Run the Setup Agent on first boot.

場合は、クエリの空白行、 『^ $』 chen.txt -nのgrep」の実現を

任意の文字を検索します。「」繰り返し「*」文字
正小数点で表現すると、(。)、メタ文字で任意の1つの文字を表します。例えば、W D終わりから始まる、すなわち4つの文字の合計、「?? D w」の文字列を検索するには、次のコマンドを実行します。

[root@localhost ~]# grep -n 'w..d' chen.txt
14:wood

結果では、「D ... w」の「木」の文字列のルールに一致します。あなたがOO、OOO、oooooが、などを照会する場合は、アスタリスク()メタ文字を使用する必要があります。しかし、それは「」繰り返し直前の単一文字のゼロ個以上を表していることを指摘しています。「Oは、それがゼロ(すなわちヌル文字)を有していること」「-n'oのgrepを、NULL文字を許可行うように、「O」文字以上で表すコマンドテキストを有することになるすべてのコンテンツ「test.txtの」は印刷出力。それは「○○である場合」の両方等、O、OO、OOO、OOO、情報を含むように、第1のOが存在している必要があり、及び第二oは、ゼロまたはそれ以上のOで標準的です。同様に、クエリ文字列は、O、少なくとも二つ以上の実行「のgrepの-n'ooo含まれている場合は「test.txtの」コマンドを使用します。

[root@localhost ~]# grep -n 'ooo*' chen.txt
11:# Run the Setup Agent on first boot.
12:firstboot --enable
14:wood
17:woooooooood
18:dfsjdjoooooof
19:Foofddd

少なくとも一つのOを含む中間文字列の末尾を開始W dのクエリは、次のコマンドを実現することができます。

[root@localhost ~]# grep -n 'woo*d' chen.txt
14:wood
16:wod
17:woooooooood

W Dクエリー始め終わり、任意の中間文字列。

[root@localhost ~]# grep -n 'w.*d' chen.txt
14:wood
15:wd
16:wod
17:woooooooood

任意の数の行を問い合わせます。

[root@localhost ~]# grep -n '[0-9][0-9]*' chen.txt
3:auth --enableshadow --passalgo=sha512
20:124153
21:3234
22:342222222
23:faasd11
24:2

「{}」の連続した文字の範囲を検索し
、あなたがそれを達成する方法の範囲内で重複している文字列を制限したい場合は、文字の繰り返し数が無限にゼロを設定するために『*』「」を使用と?例えば、3〜5個の連続した文字は、通常の文字に基づいて、この時間は、式の範囲を制限する必要がOを見つけるために「{}」。「{}」の文字を使用するとき、「{}」シェルで特別な意味を持っているので、ので、エスケープ文字「\」、普通の文字に「{}」の文字を使用する必要があります。

Oつ以上の文字を問い合わせます

[root@localhost ~]# grep -n 'o\{2\}' chen.txt
11:# Run the Setup Agent on first boot.
12:firstboot --enable
14:wood
17:woooooooood
18:dfsjdjoooooof
19:Foofddd

2-5 O文字列を含む中間体は、W dと、クエリの終始。

[root@localhost ~]# grep -n 'wo\{2,5\}d' chen.txt
14:wood

二つ以上の中間O文字列を含む、W Dとクエリの終始。

[root@localhost ~]# grep -n 'wo\{2,\}d' chen.txt
14:wood
17:woooooooood

シェルスクリプトの正規表現三銃士の1(grepを、egrepの)

II。拡張正規表現

为了简化整个指令,需要使用范围更广的扩展正则表达式。例如,使用基础正则表达式查询除文件中空白行与行首为“#” 之外的行(通常用于查看生效的配置文件),执行“grep –v‘^KaTeX parse error: Expected group after '^' at position 22: …txt | grep –v ‘^̲#’”即可实现。这里需要使用管…|^#’test.txt”,其中,单引号内的管道符号表示或者(or)。
此外,grep 命令仅支持基础正则表达式,如果使用扩展正则表达式,需要使用 egrep 或 awk 命令。awk 命令在后面的小节进行讲解,这里我们直接使用 egrep 命令。egrep 命令与 grep 命令的用法基本相似。egrep 命令是一个搜索文件获得模式,使用该命令可以搜索文件中的任意字符串和符号,也可以搜索一个或多个文件的字符串,一个提示符可以是单个字符、一个字符串、一个字或一个句子。
常见的扩展正则表达式的元字符主要包括以下几个:

シェルスクリプトの正規表現三銃士の1(grepを、egrepの)

"+“示例:执行“egrep -n ‘wo+d’ test.txt”命令,即可查询"wood” “woood” "woooooood"等字符串

[root@localhost ~]# egrep -n 'wo+d' chen.txt
14:wood
16:wod
17:woooooooood

"?"示例:执行“egrep -n ‘bes?t’ test.txt”命令,即可查询“bet”“best”这两个字符串

[root@localhost ~]# egrep -n 'bes?t' chen.txt
11:best
12:bet

"|"示例:执行“egrep -n ‘of|is|on’ test.txt”命令即可查询"of"或者"if"或者"on"字符串

[root@localhost ~]# egrep -n 'of|is|on' chen.txt
1:#version=DEVEL
2:# System authorization information
4:# Use CDROM installation media
13:# Run the Setup Agent on first boot.
15:ignoredisk --only-use=sda
20:dfsjdjoooooof
21:Foofddd

"()" 例: "egrepの-n 'T(| E)ST' test.txtの"。「TAST」および「試験」「an」および「E」の中に示されているように、2つの単語「T」及び「ST」は、繰り返されるので、「()」のシンボルのうち、とする「|」、すなわち、分離「TAST」または「テスト」の文字列を見つけることができます

[root@localhost ~]# egrep -n 't(a|e)st' chen.txt
12:test
13:tast

"()+" 実施例 "のegrep -n '(XYZ)+ C' test.txtの"。このコマンドは、最後に「A」の先頭にクエリが「C」、一つ以上の中間の「XYZ」の文字列手段であります

[root@localhost ~]# egrep -n 'A(xyz)+C' chen.txt
14:AxyzxyzxyzC

おすすめ

転載: blog.51cto.com/14449524/2441674