Я хочу узнать слово, которое заканчивается на ()...Использование команды grep в linux.

grep file_name_where_i_want_to_search "*()"

что-то подобное .... но не работает

2 ответа2

0

Избегайте (), как это. если это в конце строки, вы должны использовать регулярное выражение (egrep)

egrep file_name_where_i_want_to_search ".*\(\)$"
0
$ 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() «словом, оканчивающимся на ()». Я предполагаю, что это не проблема в вашем реальном случае использования в любом случае.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .