我想找出以 () 結尾的單字...使用 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意思是“單字中的一個字元”
  • \+表示“前一個實體一次或多次”

因此,grep -o '\w\+()'意思是「列印由一個或多個單字字元組成的所有內容,後面跟著 ()」。

這仍然會匹配例如bar()的部分bar()baz。有人可能會說括號實際上結束了單詞,這使得bar()「一個以 () 結尾的單字」。我認為無論如何這在您的實際用例中都不是問題。

答案2

像這樣轉義 () 。如果這是在行的末尾,您應該使用正規表示式(egrep)

egrep file_name_where_i_want_to_search ".*\(\)$"

相關內容