Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> awkの正規表現、テキスト処理ツールとしてawkを使う

awkの正規表現、テキスト処理ツールとしてawkを使う

  

、正規表現は不可欠です。このツールで使用されている正規表現を習得する。実際、正規表現だけを学ぶ必要はありません。正規表現はプログラミング言語のようなものであり、独自の文法規則はすでに何かを意味します。ツールが異なれば、それらのほとんどは同じ意味を意味します。正規表現は、多くのLinuxテキスト処理ツール(awk、sed、grep、perl)で使用されています。実際には、3種類しかありません。詳しくは、Linuxシェルの正規表現(BRE、ERE、PRE)の違いの比較を参照してください。いくつかのツールが特定の種類の正規表現の一部である限り。その文法規則は基本的に同じです。その記事を通して、私たちはawkの正規表現が次のものに属することを知っています:Extended Regular Expression(Extended RegEx EREとも呼ばれます)。


A、awk拡張正規表現(ERES)の基本表現記号の導入

character
関数
+ 1つ以上の文字または拡張子の場合に指定正規表現の特定の値(+(プラス記号)の前)はこの文字列内にあり、文字列は一致します。コマンドライン:awk '/smith + ern /' testfile
には、 smit
という文字と、それに続く ernという文字を含む h
という文字が含まれます。
終了文字列のレコードはすべて標準出力に出力されます。この例での出力は次のとおりです。
smithern、harry smithhern、anne
?文字列内で0個または1個の文字、または拡張正規表現(?(疑問)の前)の場合はその文字を指定し、次に文字を指定します。文字列マッチングコマンドライン:awk '/smith?/' testfile
smit
文字の後に0個または h
文字の1個のインスタンスが続くすべてのレコードを標準出力に出力します。この例の出力は次のとおりです。
smith、alan smithern、harry smithhern、anne smitters、alexis
            次の場合に指定 (縦線)で区切られたいずれかのストリングがストリング内にあり、そのストリングが一致します。コマンドライン:awk '/allen |  Alan /'testfile
文字列 allen
または alan
を含むすべてのレコードを標準出力に出力します。この例の出力は次のとおりです。
smiley、allen smith、alan
()文字列を正規表現で組み合わせます。コマンドライン:awk '/a(ll)?(nn)?e /' testfile
の文字列は ae
または alle
または anne
または allnne
のすべてのレコードが標準出力に出力されます。この例の出力は次のとおりです。
smiley、allen smithhern、anne
{m}特定の値が文字列に含まれているパターンがm個ある場合、その文字列が一致することを指定します。コマンドライン:awk '/l {2} /' testfile
標準出力に出力する
smiley、allen
{m、}少なくともm個のパターンが文字列中に特定の値を持つかどうかを指定し、次に文字列一致します。コマンドライン:awk '/t {2、} /' testfile
標準出力に出力する:
smitters、alexis
{m、n} mとnのどちらかを指定する(mとnを含む)パターンの特定の値が文字列(m <= n)にある場合、文字列は一致します。コマンドライン:awk '/er {1、2} /' testfile
標準出力に出力する:
smithern、harry smithern、anne smitters、alexis
[String] String内に正規表現と角括弧を指定する変数で指定された文字はすべて一致します。コマンドライン:awk '/sm [ah] /' testfile
sm
の後に a
から h
のアルファベット順に並べられた任意の文字が続きます。すべてのレコードは標準出力に印刷されます。この例の出力は次のとおりです。
smawley、andy
[^ String]指定されたストリングの先頭にある[](角括弧)および^(挿入トークン)は、正規表現および角括弧内の文字がすべて正しくないことを示します。一致します。したがって、コマンドラインは次のとおりです。awk '/sm [^ ah] /' testfile
標準出力に出力:
smiley、allen smith、alan smithern、harry smithhern、anne smitters、alexis
〜、!〜正規表現に一致する(チルダ)、または一致しない(チルダ、感嘆符)変数を指定する条件ステートメント。コマンドライン:awk '$ 1〜/n /' testfile
最初のフィールドに n
という文字を含むすべてのレコードを標準出力に出力します。この例の出力は次のとおりです。
smithern、harry smithhern、anne
^フィールドまたはレコードの先頭を指定します。コマンドライン:awk '$ 2〜/^ h /' testfile
2番目のフィールドの最初の文字として文字 h
を持つすべてのレコードを標準出力に出力します。この例の出力は次のとおりです。
smithern、harry
$フィールドまたはレコードの終わりを指定します。コマンドライン:awk '$ 2〜/y $ /' testfile
2番目のフィールドの最後の文字として文字 y
を持つすべてのレコードを標準出力に出力します。この例の出力は、次のとおりです。
smawley、andy smithern、harry
。(ピリオド)空白の末尾にある端末の改行文字以外の任意の文字を表します。コマンドライン:awk '/a..e/' testfile
2つの文字で区切られた文字 a
とeですべてのレコードを標準出力に出力します。この例の出力は次のとおりです。
smawley、andy smiley、allen smithhern、anne
*(アスタリスク)は、0個以上の任意の文字を意味します。コマンドライン:awk '/a.*e/' testfile
0個以上の文字で区切られた文字 a
とeですべてのレコードを標準出力に出力します。この例の出力は次のとおりです。
smawley、andy smiley、allen smithhern、anne smitters、alexis
\\(円記号)エスケープ文字。拡張正規表現内で特別な意味を持つ文字の前にある場合、エスケープ文字はその文字の特別な意味を削除します。例えば、コマンドライン:/a \\ /\\ //
は、正規表現の区切り文字の通常の意味としてスラッシュを否定するため、パターンa //と一致します。円記号自体を文字として指定するには、二重円記号を使用します。バックスラッシュとその使い方の詳細については、エスケープシーケンスについての以下を参照してください。
ログイン


のPERと比較して、主にいくつかのタイプ識別子と関連して全くないことを示す:前記' \\ D、\\ D、\\ S、\\ S、\\ tの\\ v、\\ n、\\ f、\\ r'その他の機能は基本的に同じです。私たちの共通のソフトウェア: javascript
、.net、javaは基本的に正規表現をサポートしています:EPRタイプ。


2番目に、awk共通呼び出しの正規表現メソッド

  • awkステートメント:

    awk‘ /REG /{ Action}’

    /REG /は、$ 0の条件付きレコードを処理のためにactionに送信するために使用できる正規表現です。

  • awk通常の操作ステートメント(〜、 〜!同等!〜)

    [chengmo @ centos5〜] $ awk 'BEGIN {info ="これはテストです;; if(info〜/test /){print" ok"

  • Awkは正規表現関数を使用しています。

    gsub(Ere、Repl、[In])

    sub(Ere、Repl) 、[In])

    match(文字列、Ere)

    split(String、A、[Ere])

    詳細な関数の使い方、あなたは参照することができます:linux awk組み込み関数詳細な紹介(例)


    以上のことから、あなたがawkの正規表現をより明確に理解しているかどうかわかりません。どんな質問でも私と連絡をとることができます!

  • Copyright © Windowsの知識 All Rights Reserved