我想找出以()結尾的單字...在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
意思是“單字中的一個字元”\+
表示“前一個實體一次或多次”
因此,grep -o '\w\+()'
意思是「列印由一個或多個單字字元組成的所有內容,後面跟著 ()」。
這仍然會匹配例如bar()
的部分bar()baz
。有人可能會說括號實際上結束了單詞,這使得bar()
「一個以 () 結尾的單字」。我認為無論如何這在您的實際用例中都不是問題。
答案2
像這樣轉義 () 。如果這是在行的末尾,您應該使用正規表示式(egrep)
egrep file_name_where_i_want_to_search ".*\(\)$"