...%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D0%B9%D1%82%D0%B5%20grep.png)
Я хочу найти слово, которое заканчивается на ()...Используя команду grep в Linux.
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 ".*\(\)$"