1

Это пример сценария оболочки, который я пытаюсь запустить, но вместо вывода результата grep он печатает всю строку. Разве нельзя транслировать, когда в $()?

i="the cat is a crazy"; word=$( echo $i | grep cat); echo $word;

2 ответа2

1

Ты только что побежал

$ echo $i | grep cat
> the cat is a crazy

Из руководства:

Grep print lines matching a pattern

Вы хотите использовать -

-o, --only-matching
Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.

$ i="the cat is a crazy"; word=$( echo $i | grep -o cat ); echo $word;
> cat
0

Вы хотите, чтобы grep -o только одно слово из строки. По умолчанию grep выводит всю строку, где найдено совпадение.

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