grep:角かっこ間の項目を一致させるための正規表現

grep:角かっこ間の項目を一致させるための正規表現

括弧の間の単語のみを一致させる方法

入力する: this is (test.com)

予想出力: test.com

答え1

以下は、目的の出力を印刷するいくつかのオプションです。

  1. これはフラグ(行の一致部分のみをgrep印刷-o)とPerl互換正規表現(-P周りを見てください:

    printf "this is (test.com)\n" | grep -Po '(?<=\().*(?=\))'
    

    この正規表現には説明が必要な場合があります。

    • (?<=\():これアクティブバックビューは通常 and 形式であり、直後のすべての場合(?<=foo)barと一致します。この場合、開いている括弧を探しているので、エスケープを使用します。barfoo\(

    • (?=\)):これ肯定的な見通し単に閉じ括弧と一致します。

  2. オプションを使用すると、すべての行で一致する部分のみが印刷されるため、-o括弧grep内の内容を見つけて次のように削除しますsed

    printf "this is (test.com)\n" | grep -o '(.*)' | sed 's/[()]//g'
    
  3. Perlの内容全体を解析します。

    printf "this is (test.com)\n" | perl -pe 's/.*\((.+?)\)/$1/'
    
  4. 内容全体を解析すると、次のようになりますsed

    printf "this is (test.com)\n" | sed 's/.*(\(.*\))/\1/'
    

答え2

1つの方法は次のとおりです。PCRE - Perl互換正規表現そしてgrep

$ echo "this is (test.com)" | grep -oP '(?<=\().*(?=\))'
test.com

引用する

関連情報