[私のLinuxは、私がショットを呼び出します!]ワイルドカードや正規表現フード

内容:
()ワイルドカードの役割を理解し、定期的に
(ⅱ)ワイルドカードの使用
(c)は、正規表現の使用
(IV)の使用は、正規表現を拡張


(A)は、ワイルドカードと正規の役割を理解し
、日々の仕事に(1.1)、我々は、ワイルドカードや正規表現を使用します。ワイルドカードは、主にアスタリスク(*)と疑問符(?)、ファイルのためのあいまい検索で、特別な声明です。フォルダを探しているときは、一つ以上の実際の文字を置き換えるためにそれを使用することができます;文字は本当に知っていないか、完全な名前を入力する気にしない、多くの場合、代わりに、一つ以上の実際の文字のワイルドカード使用している場合。正規表現は、正規表現が正常に取得するために使用され、コンピュータサイエンスの概念であり、これらのテキストは、正規表現は、文字列操作の論理式で、パターンに一致する事前定義された特定を使用することです交換してください文字を組み合わせ、これらの特定の文字、「列ルール」を形成し、この「ルール文字列は、」列のフィルタリングロジックを発現するために使用されます。
(1.2)ワイルドカードや正規表現のいずれかで、ファジーマッチングの機能は物事の特定のタイプを一致させるために使用され、一方が特定値と一致しません。ワイルドカードは、一般的にシェルのために使用され、正規表現は、一般的に他の言語のために使用されています。


(ii)のワイルドカードの使用
(2.1)まず、最初の「[]」括弧[リスト]は、リスト内の任意の1文字と一致しています。例えば、aとbの間の[XYZ] Bは、唯一の文字を持っているが、唯一のXまたはYまたはZのようなしなければならない:AXB、AYB、AZB
「(2.2)と第二は、[C1、C2] 「とは、[0-9]又は[AZ]のように、文字の範囲を示す任意の単一キャラクタC1-C2を一致させるために使用されます。例えば、 "[0-9] B"も必要しか示し一文字例えば0~9のように:A0B、A1B、A2B、 A3B、A4B、A5B、A6B、A7B、A8B、A9B
注我々は、単一の文字を一致させる必要があり、何の場合は、その後、我々は、「[a-zA-Z]のを使用することはできません 」 表現します。
(2.3)第三に、 "[!C1-C2]または[^ C 1 -C 2]"で、一致がC1-C2の任意の文字はありません。[!0-9]例えばbは、 [^ 0-9] bはとBの間の唯一の文字を表し、および要件を満たすために文字0-9、間にあるされていない:ACB、ADB
(2.4)例:私たちはvms002ホストディレクトリにRH124を作成し、RH124のディレクトリに該当するファイルを作成:11111を、A111、a_111、A22 、lwang、lWang、RH124。その後、我々からzまでの間に最初のクエリ文字、第二の非数値文字、文字は以下の時に任意です。
MKDIR RH124#
#11111タッチa_111 A111 A22 lwang lWang RH124
とき#LS [AZ] [^ 0-9 ] * --- 最初の文字へのクエリは、2番目の文字はバックの間の非数値zとします文字は任意である
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(2.5)例:ディレクトリの間のRH124 Zの最初の文字の形式を見つけるために次の我々の必要性、または第二の文字は「 - 」の文字3又はZであります次の文字のいずれかは任意です。我々は、ファイル名の要件を満たすことができるように-1
タッチA-1#
#LS [AZ]は[AZ] *
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(2.6)第4のケースは、正確な文字を指定された"[[:上部]] "、 "[[下部:]]"、 我々が使用しているためZの文字の間には、Zを介して、ケースが完全に一致することができない場合[AZ]は、一致させることができる、我々は、「[[:アッパー:]]を使用でき 、」 我々が使用し、大文字を表し"[[下部:] " 純粋小文字の文字を表します。
#Lsが[[:アッパー:] ] * --- 先のファイル名の先頭にすべてのクエリの純粋な大文字
#lsが[[:下げる:] ] * --- ファイル名のすべての純粋な小文字の手紙のクエリ始まり
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(2.7)最初のコース4文字を正確に特定の文字を表現する他の方法がある指定:「[[:アルファ:] ]」 のみ「[:alnum:[]、文字と一致表す ]」は、マッチング文字と数字を表し、 " [[:桁:]]「一致が純粋にデジタル示します。
(2.8)例:今、私たちのシステムは、ユーザーと結婚しない、我々は最初のユーザーが、結婚と結婚し、ルートに指定されたホームディレクトリ(図1-5)を作成します。私たちは、その後、ホームディレクトリと結婚削除、その後、我々は、ユーザーがハンドオーバーが異常状態であるので、後に、何のホームディレクトリを見つけていないので、結婚することに切り替える(図1-6)、この私たちがしている場合は、/ etc / default / useraddの設定ファイルで、 (図1-7)中では/ etc / skelのディレクトリユーザのホームディレクトリへのクエリテンプレートファイルには、我々はすべてのテンプレートファイルは、/ etc / skelのは、両方のホームディレクトリと結婚し、所有者とグループを変更するためにコピーされます関連情報、ケースは適切にユーザ(図1-8)結婚切り替えることができます。
#useraddの-d /結婚結婚---ユーザーを作成するルートに指定されたホームディレクトリを、結婚と結婚して作成
#RM -rf /結婚/ ---ホームディレクトリを削除すると結婚
#Vimのは、/ etc / default / useraddの --- デフォルト/ディレクトリ内のクエリは/ etc / useraddのファイル
#CP -a /etc/skel/.[^.]* /結婚/ ---の/ etc / skelの/ディレクトリすべての冒頭で、「」、2番目の文字はされているので、 『[]』と、それは非存在でなければなりません。 『』いいえで、すべてのホームディレクトリと結婚/にコピーされた任意の文字を含むファイルの後、SKELはスケルトンフレームを表し、 (図1-8)
。#chown コマンド-R marry.marry /結婚/ ---所有者とグループを変更/結婚のホームディレクトリ(図1-8)と結婚している
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
第五は、「?」疑問符である(2.9) 、任意の1つの文字にマッチします。例えば、RH124ディレクトリで、我々のクエリ「[AZ] ????」、それは最初の文字はなる4つの文字のいずれかの後ろになりますクエリ文字のファイル名で表します。
注:隠されたファイルの数を表す点に一致させることができない疑問符「?」。「」「.aa」ファイルシステムは、今、私たちは『???』を使用している場合は、この隠されたファイルのうち一致することはできません、と私たちは隠されたファイルの種類を一致させたい場合は、グローバルワイルドカード処理をオンにする必要があることを意味します。
最初の文字#のLS [AZ] ???? ---クエリ文字ファイル名は、以下からなる4つの文字の後ろになり、構成
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(2.10)任意の長さに一致する第六のアスタリスク「*」、です任意の文字。例えば、我々はすべてのファイル名が文字で始まるれ、削除されている任意の文字ファイルが続く
、次の4つのファイルを作成します---#タッチAAA BB CCはAA2を
#RM -rf A * ---すべてのファイル名任意の文字ファイルが削除されているが続く手紙の冒頭、
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(2.11)は、我々は、インストールのために、「#yumの* VSFTPインストール」を使用して、時々 、私たちは現在のシステムにソフトウェアをインストールするVSFTP、エスケープ文字を表し、私たちは、実行中であるため、「\」バックスラッシュ七ですシステムコマンドは、最初にすることは仕事関連のパッケージを見つけるために、YUMリポジトリに到達する前に、シェルプロセスで実行することです。今、私たちの現在のディレクトリカレントディレクトリvsftp123内のファイルがある場合、我々は「VSFTP *」を実行するとつまり、シェルは最初の「VSFTPは*」、「VSFTP *」ファイルフォーマットの遵守があるかどうかを見つけるためのシェル決意だっただろう、シェルはこの時、「VSFTP *」「vsftp123」に解決した後、YUMリポジトリに「vsftp123」がインストールされたパッケージを見つけることになり、このような状況は、私たちが望むものではありません。私たちはシェルでパッケージをインストールするコマンドを実行する際に、一般的にエスケープ文字を使用することをお勧めします「#yumの* \ VSFTPインストール」、このようなインストールを実行しますが、私たちがするワイルドカードを使用するシェル防ぐことができますので、より良いフォーマットです状況が発生した解決しました。
#廉* ---エスケープ文字を解析し、シェル防ぐために、ワイルドカードをエスケープするために、ワイルドカードを使用\ VSFTPインストール
「* VSFTPを」#yumのインストールを---単一引用符は、シェルのワイルドカードを防ぐために、エスケープするために使用することができますパース
があるので、「/」我々は、ファイルを作成するときに、ファイル名を含めることはできません、ということ(2.12)注「/」ディレクトリに代わって作成されます。
#タッチRH124 / ccで---今回「RH124 / ccの」ファイル名を意味するものではありませんが、かなりのcc RH124 /ディレクトリにファイルを作成します
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード


(三)正则表达式的使用
(3.1)正则表达式是用来匹配字符串的,针对文件内容的文本过滤工具,大都用到正则表达式,如vim、grep、awk、sed等。正则表达式和我们上面说的通配符实现的效果都是一样的,是为了实现查询信息的模糊匹配。
(3.2)第一个“^”表示开头,例如我们先将/etc/passwd文件拷贝到当前目录中,然后查询passwd文件中以root字符开头的行,此时可以使用“^”来进行标识。
# grep ^root passwd
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(3.3)第二个“$”表示行末,我们先将passwd文件中的相关行进行设计一下,然后查找每一行行末是“bash”字符的行。
# grep bash$ passwd---查询行末字符是bash字符的所有行
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(3.4)第三个“\<”或者“\b”表示锚定的是单词的开头,我们先来创建一个aa.txt的文件,然后我们查询“\<tom”以tom字符开头的所有行。
# grep '\<tom' aa.txt---查询以tom字符开头的所有行
# grep '\btom' aa.txt---查询以tom字符开头的所有行
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード

[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(3.5)第四个“\>”或者“\b”表示锚定的是单词的末尾,在aa.txt文件中,我们查询“tom\>”以tom字符结束的所有行(图1-17)。如果我们希望查询出所有以tom为单词独立存在的行时,我们可以同时使用“\<”和“\>”符号(图1-18)。
# grep 'tom\>' aa.txt---查询“tom\>”以tom字符结束的所有行
# grep 'tom\b' aa.txt---查询“tom\b”以tom字符结束的所有行
# grep '\<tom\>' aa.txt---查询出所有以tom为单词独立存在的行
# grep '\btom\b' aa.txt ---查询出所有以tom为单词独立存在的行
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(3.6)示例:现在我们希望查询SELinux中对端口设置的上下文信息,如果需要过滤具体的端口号的信息,则可以使用“\<\>”来指定独立的单词信息,例如过滤出只包含80端口上下文的行,如果我们只是使用“grep 80”过滤出的信息是不正确的(图1-19),我们应该使用“grep '\<80\>'”才是正确的(图1-20)。
# semanage port -l | grep 80---查询当前系统中所有包含80端口上下文的信息
# semanage port -l | grep '\<80\>'---查询当前系统中只含有80端口上下文的信息行
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(3.7)第五个“.”表示单个任意字符,和通配符中的“?”问号的意义一致。例如我们想要匹配出aa.txt文件中to单词后跟任意一个字符的所有符合要求的行(图1-21)。如果我们希望“.”符号没有模糊查询的意思,就代表它本身的字符的意思,则我们可以使用“\”作为转义符,这样就可以直接查询出包含“to.”字样的行(图1-22)。
# grep 'to.' aa.txt---查询出所有符合to单词后还会跟一个任意字符的行
# grep 'to\.' aa.txt---使用转义符,直接查询包含“to.”字符的行
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(3.8)第六个“[]”,表示的是匹配指定范围内的任意单个字符。
(3.9)第七个“[^]”,表示的是匹配指定范围外的任意单个字符。
(3.10)分组概念
(3.10.1)第八个“\(\)”,表示的是分组。例如“\(ab\)*”表示ab单词可以出现0次、1次或任意次。我们创建一个test.txt文件(图1-22-1),然后我们使用“\(ab\)*”将符合条件的都筛选出来(图1-22-2)。
# grep "(ab)*" test.txt
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(3.10.2)我们创建一个文件test3.txt,然后编辑如下的内容,我们查询“l..e”与“l..e”之间有任意字符任意次的所有符合条件的行,此时我们发现test3.txt文件中的第1行至第4行的内容都被筛选出来了(图1-22-4)。此时我们如果希望出现的行中前后两个字符是完全一致的才符合要求并显示,即test3.txt文件中的第1行和第3行显示出来,此时我们需要使用后项引用的方式来完成要求(图1-22-5)。
分组:\(\)
后项引用:
\1:引用第一个左括号以及与之对应的右括号所包括的所有内容
\2:引用第二个左括号以及与之对应的右括号所包括的所有内容
\3:引用第三个左括号以及与之对应的右括号所包括的所有内容
# grep 'l..e.*l..e' test3.txt---查询“l..e”与“l..e”之间有任意字符任意次的所有符合条件的行
# grep '\(l..e\).*\1' test3.txt---查询例如“like”开头与“like”结尾的前后对应行
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(3.10.3)示例:我们在当前目录下创建一个inittab的文件,然后我们查询文件中行中出现了任意一个数字,在行尾结束时也出现了这个相同的数字的行,将这个行显示在屏幕上。
# grep '\([0-9]\).*\1$' inittab---其中“\([0-9]\)”表示行中出现的任意一个数字,“\1$”表示在行尾结束时也出现了这个相同的数字
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(3.11)我们在使用grep命令的时候可以使用“-A”、“-B”、“-C”参数,其中-A表示的是after后面,其中-B表示的是before前面,其中-C表示的是context上下文。
# grep -A 2 '^core id' /proc/cpuinfo---表示core id字符开头行的后面的2行
# grep -B 2 '^core id' /proc/cpuinfo---表示core id字符开头行的前面的2行
# grep -C 2 '^core id' /proc/cpuinfo---表示core id字符开头行的上下文各2行
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード


(四)扩展正则表达式的使用
(4.1)以上我们所使用的正则表达式在进行查询的时候可以配合grep命令进行使用“grep 表达式 file”。不过有些正则表达式grep命令并不支持,此时我们应该使用“grep -E 表达式 file”或者“egrep 表达式 file”启用扩展的正则表达式进行查询。有时候还有一些正则表达式是扩展的正则表达式也解决不了的,此时我们应该使用“grep -P 表达式 file”即调用perl语言中的正则表达式进行查询。分割线扩展正则表达式。
注意:egrep -o表示的是仅仅输出查询出的字符
(4.2)第一个“?”表示它前面出现的字符,出现0次或者1次。“to.?”表示的意思是to后会跟一个任意的字符,但是这样任意的字符可能出现0次,也可能出现1次,所以此时aa.txt 文件中包括“to”在内的所有行都是符合要求的。此时由于使用的“?”问号,所以我们需要使用扩展的正则表达式egrep进行匹配查询。
# egrep 'to.?' aa.txt---其中to后会跟一个任意的字符,但是这样任意的字符可能出现0次,也可能出现1次
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(4.3)第二个“+”表示它前面的字符出现1次或者多次。此时我们查询“to.+”表示的意思是在to单词后面有一个任意字符,同时这个任意字符出现可能是1次,也可能出现多次,所以在aa.txt文件中除了第一行不符合要求,其他的行都是符合要求的。同时我们需要使用扩展的正则表达式egrep进行匹配查询。
# egrep 'to.+' aa.txt---也称贪婪匹配,在to单词后面有一个任意字符,同时这个任意字符出现可能是1次,也可能出现多次
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(4.4)第三个“*”表示它前面的字符出现任意次数。此时我们查询“to.*”表示匹配的是to单词后有一个任意字符,并且这个任意字符出现任意次,包括0次、1次、任意次。所以此时aa.txt文件中所有行都是符合匹配的要求的。同时我们需要使用扩展的正则表达式egrep进行匹配查询。
# egrep 'to.*' aa.txt---查询匹配to单词后有一个任意字符,并且这个任意字符出现任意次,包括0次、1次、任意次
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(4.5)在模式匹配的过程中我们有两个概念,第一个是贪婪匹配,第二个是懒惰匹配,默认是工作在贪婪模式中。其中贪婪匹配表示的是尽可能多的向后面进行匹配,例如“to.+”表示的是to单词后会有一个任意字符,并且这个任意的字符至少是1个,最多可以任意的个数,所以匹配的时候符合要求的行会尽可能的向后进行匹配,同时我们需要使用扩展的正则表达式egrep进行匹配查询(图1-26)。而懒惰匹配表示的是在符合要求的情况下尽可能少的向后进行匹配,例如“to.+?”表示的是to单词后会有一个任意字符,“+”表示并且这个任意字符至少匹配一个,最多可以匹配任意的个数,“?”表示前面的部分可以出现0次或者1次,所以此时就会按照最少符合要求的情况进行懒惰匹配,同时我们需要使用扩展的正则表达式“grep -P”进行匹配查询(图1-27)。以上的应用也是非常广泛的,有时候我们在网站进行信息抓取的时候我们希望从<p>标志位开始的抓取,到</p>标志位结束,此时如果我们使用贪婪匹配的模式进行抓取,那么我们抓取的信息便包含a和b两段内容,如果我们使用懒惰匹配的模式进行抓取,那么我们抓取的信息就只会包含a段的内容(图1-28)。
# egrep 'to.+' aa.txt---贪婪匹配,在to单词后面有一个任意字符,同时这个任意字符出现可能是1次,也可能出现多次,同(3.9)
# grep -P 'to.+?' aa.txt---懒惰匹配,调用Perl语言支持的正则表达式,然后在匹配的过程中匹配最少符合要求的字符信息
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(4.6)第四个是在使用grep -P时的“{n,m}”,在使用常规grep时的“{n,m}”,表示的是匹配次数在n到m之间,包括边界;其中grep -P时的“{n}”或者常规grep时的“{n}”表示必须匹配n次;grep -P时的“{n,}”或者常规grep时的“{n,}”表示匹配n次及以上。
# grep -P 'tom{2}' aa.txt---查询m出现两次的所有符合字段
# grep -P 'tom{2,}' aa.txt---查询m出现次数在两次及两次以上的所有符合字段
# grep 'tom{2,}' aa.txt---查询m出现次数在两次及两次以上的所有符合字段,由于使用的是常规grep,所以需要用“{2,}”表示
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(4.7)第五个是可以使用指定的字符表示特定类型的一类字符。
[[:alpha:]]:表示所有字母
[[:alnum:]]:表示字母与数字字符
[[:ascii:]]:表示ASCII字符
[[:blank:]]:表示空格或制表符
[[:cntrl:]]:表示ASCII控制符
[[:digit:]]:表示数字
[[:graph:]]:表示可见字符,非控制、非空格字符
[[:lower:]]:表示小写字母
[[:print:]]:表示可打印字符
[[:punct:]]:表示标点符号字符
[[:space:]]:表示空白字符,包括垂直制表符
[[:upper:]]:表示大写字母
[[:xdigit:]]:十六进制数字
(4.8)查询实例
(4.8.1)示例:查询IP地址,目前在我们的/var/log/messages文件主要保存的是系统的日志信息,其中也会有包含IP地址的字符信息,我们的需求是将其中所有IP地址格式的信息全部过滤出来。由于我们知道IP地址的格式可以是192.168.26.101,也可以是1.1.1.1,所以此时我们可以使用“[0-9]{1,3}”表示IP地址的一段信息,使用“{3}”表示数字和点组成的信息重复3次,最后再加上一段数字,此时我们便可以得到这样一个表示IP地址格式的正则表达式:([0-9]{1,3}.){3}[0-9]{1,3}
# less /var/log/messages---查看包含系统日志的文件
# egrep '([0-9]{1,3}.){3}[0-9]{1,3}' /var/log/messages---查询出日志中所有包含IP地址的所有字符信息的行
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(4.8.2)示例:找出/boot/grub2/grub.cfg文件中1-255之间的数字。此时我们可以使用的正则表达式为:\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>
# egrep '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>' /boot/grub2/grub.cfg
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(4.8.3)示例:粗略查询所有符合IP地址格式要求的字符串,例如0.0.0.0至255.255.255.255这样的格式,此时我们可以按照如下的方式进行查询。
# ifconfig | egrep -o '\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(4.8.4)示例:精确查询所有格式为IP地址,并且符合五类IP地址中A类、B类、C类IP地址的所有适合的字段。
A类:1-127
B类:128-191
C类:192-223
# ifconfig | egrep '\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>'
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード
(4.9)は、一般的に、我々は、単一引用符で式が原因に式を追加することを示唆しているとき、正規表現の一部を表しています。既存のファイル名が、その後、我々は発現系で単一引用符の場合を追加しない場合、我々はTOZを提出した場合、「へ?」になります最初はクエリはsehllなり、この時点で、決意をシェルシェルに送られました対応システムで見て「?へ」とのegrepに送られ、「TOZ」その後「TOZ」に解決はaa.txtファイルのこの時間は、すべての情報は出てこないクエリで、解決されます。正規表現の表現の一部が、シェルの構文解析が発生防ぐことができるように単一引用符を追加することを示唆していることを示すために一般的に必要です。
#egrepの「に?」Aa.txt ---お問い合わせはaa.txt、任意の文字を単語に0または1回出現任意の文字表示されます
\ aa.txtを---そしてそれ以上に、単一引用符の#1のegrepを使うのか?一貫性のある結果
[私のLinuxは、私がショットを呼び出します! ]ワイルドカードや正規表現フード

------この記事を締結、読んでくれてありがとう------

おすすめ

転載: blog.51cto.com/13613726/2460788