我想找出以 () 结尾的单词...使用 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 ".*\(\)$"