()で終わる単語を見つけたい...grepを使う

()で終わる単語を見つけたい...grepを使う

() で終わる単語を見つけたいです...Linux で grep コマンドを使用します。

grep file_name_where_i_want_to_search "*()"

そういうこと...でもうまくいかない

答え1

$ cat <<EOF > test
foo bar
foo bar() baz
foo.bar() baz
foo bar baz()
foobarbaz() foo bar()baz
EOF
$ grep -o '\w\+()' test
bar()
bar()
baz()
foobarbaz()
bar()
  • -o「一致する部分のみを印刷する」という意味で、行全体ではなく
  • \w「単語内の文字」を意味する
  • \+「前のエンティティを1回以上」という意味です

つまり、grep -o '\w\+()'「() が後に続く 1 つ以上の単語文字で構成されるすべてのものを印刷する」ことを意味します。

bar()これは、たとえばの部分と一致しますbar()baz。括弧は実際には単語を終了し、bar()「() で終わる単語」になると主張する人もいます。いずれにせよ、実際の使用例ではこれは問題にならないと思います。

答え2

() をこのようにエスケープします。これが行末にある場合は、正規表現 (egrep) を使用する必要があります。

egrep file_name_where_i_want_to_search ".*\(\)$"

関連情報