3つの剣士のgrepと正規表現をシェルプログラミング
grepツール
grepは、キーワードに基づいて行をフィルタリングするために使用される行フィルタリングツールです。
構文:
grep-option "keyword"ファイル名
1.1共通オプション
オプション | 意味 |
---|---|
-私 | 大文字と小文字を区別しません |
-v | キーワードを含まない、つまり逆選択の行を検索する |
-w | 単語で検索し、一部の文字のみに一致する |
- | 一致した文字列のみを表示 |
-c | 一致の数を数える |
-n | 行番号を表示 |
-r | ディレクトリをレイヤーごとにトラバースして検索します |
-A n | 一致する行とそれに続く(後の)n行を表示する |
-B n | 一致する行とn行前(前)を表示 |
-C n | 一致する行とその前後のn行を表示 |
-e | 正規表現を使用する |
-E | 拡張正規表現を使用する |
-P | 数字、文字、または文字列に一致 |
1.2オプションの説明
テストテキストの内容は次のとおりです。grep-
w
コマンド:grep -w'cen 'sedtest.txt
は図から確認できます。オプション-wが含まれていない場合、テキストに「cen」が含まれている限り、テキストはフィルターで除外され、-wを追加した後、単語がテキストに存在する場合のみフィルタリングされます
grep -o
命令:grep -o 'cenjeal' sedtest.txt
図からわかるように、-oが含まれていない場合は行全体が出力され、-oオプションを使用すると、一致する文字列のみが表示されます。
grep -P
コマンド:grep -P '\ d' sedtest.txtで数字を照合
コマンド:grep -P '\ w' sedtest.txtで英数字のアンダースコアを照合
コマンド:grep -P '\ s' sedtest.txtで文字列を照合
2つの正規表現
2.1正規表現の意味
正規表現(Regular Expression、regex、またはregexp、略してRE)は、正規表現(regular expression)に変換され、検索プロセスで指定された文字を照合するために使用される文字パターンです。
次のような正規表現をサポートするプログラム:find | vim | grep | sed | awk
2.2正規表現の適用シナリオ
1.メール、ID番号、携帯電話番号、銀行カード番号などを照合します
。2.特定の文字列を照合し、特定の処理を実行します。
2.3正規表現の名詞の説明
メタキャラクター
ドット(。)スター(*)疑問符(?)など、正規表現で特別な意味を持つ特殊文字を指します。
主人公
metacharacter.ab c * aoo oの前の文字。
2.4最初のタイプの正規表現
一般的なメタキャラクター
メタキャラクター | 特徴 | 例 |
---|---|---|
。 | 改行以外の任意の1文字に一致 | |
* | 先頭文字が0回または複数回連続して出現する | |
。* | 任意の長さの文字に一致 | |
^ | 行頭(で始まる) | ^ルート |
ドル | 行末(で終わる) | root $ |
^ $ | 空白行に一致 | よく使われる |
[] | かっこ内の任意の1文字または1文字のグループに一致 | [abc] |
[^] | 一致には、括弧内に単一文字または単一文字のグループが含まれていません | [^ abc] |
^ [^] | 一致が、括弧内の単一文字または単一文字のグループで始まっていない | ^ [^ abc] |
その他の一般的に使用されるメタキャラクター
メタキャラクター | 特徴 | 例 |
---|---|---|
\ < | 言葉の頭を取ります | grep '\ <hel' 1.txt |
\> | 言葉の終わりに | grep 'rld \>' 1.txt |
\ <\> | 完全に一致 | grep '\ <hello \>' 1.txt |
\ {n \} | 先頭の文字にn回連続して一致 | |
\ {n、\} | 先頭の文字と少なくともn回一致する | |
\ {n、m \} | n回からm回の間の先行文字に一致 | |
\(\) | 一致した文字を保存します | sed 's /(10.1.1。)。1 / \ 1.254 / g' 1.txt |
\ d | 一致番号(grep -P) | [0-9] |
\ w | 英数字のアンダースコアに一致(grep -P) | [a-zA-Z0-9_] |
\ s | スペース、タブ、フォームフィードを一致させる(grep -P) | [\ t \ r \ n] |
一般的に使用される拡張メタ文字の
grepでは、-Eを追加するか、egrepを使用する必要があります
sedは-rを追加する必要があります
拡張メタキャラクター | 特徴 | 例 |
---|---|---|
+ | 1つ以上の先行文字に一致します | |
? | ゼロまたは1つの先行文字に一致 | |
| | または | aまたはbに一致 |
() | 文字のグループ(全体として) | (my | your)self:自分自身に一致するか、自分自身に一致することを意味します |
{n} | 先頭の文字がn回繰り返されました | |
{n、} | 先頭の文字が少なくともn回繰り返されている | |
{n、m} | 先頭の文字がn回からm回繰り返される |
2.5 2番目のタイプの正規表現
拡張メタキャラクター | 特徴 | 例 |
---|---|---|
[:スクープ] | 英数字 | [[Charon]] + |
[:アルファ:] | アルファベット文字(大文字と小文字を含む) | [[:alpha:]] {4} |
[:ブランク:] | スペースとタブ | [[:ブランク:]]* |
[:桁:] | デジタル | [[:桁:]]? |
[:下:] | 小文字 | [[:lower:]] {4、} |
[:アッパー:] | 大文字 | [[:upper:]] + |
[:ポイント:] | 句読点 | [[:ポイント:]] |
[:スペース:] | 改行、改行などを含むすべての空白 | [[:スペース:]]* |