() で終わる単語を見つけたいです...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 ".*\(\)$"