我想找出以 () 结尾的单词...使用 grep

我想找出以 () 结尾的单词...使用 grep

我想找出以 () 结尾的单词...使用 Linux 中的 grep 命令。

grep 文件名_我想要搜索的位置"*()"

类似这样的事情......但它不起作用

答案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 ".*\(\)$"

相关内容