Печать только соответствующего слова, а не всей строки через grep
Я знаком с программированием оболочки в bash, но по какой-то причине egrep -o
для печати только совпадающие слова не работают и отображает ошибку, как показано ниже.
Окружающая среда - консоль ksh unix на шпатлевке, а не linux или терминал ubuntu...... любые советы приветствуются!
Вход и выход терминала:
AB12 $ echo "i am a boy" | grep -w "am"
i am a boy
AB12 $ echo "i am a boy" | egrep -o "am"
egrep: illegal option -- o
usage: egrep [ -bchilnsv ] [ -e exp ] [ -f file ] [ strings ] [ file ] ...
AB12 $ echo$
ksh: echo$: not found
AB12 $ echo $SHELL
/bin/ksh
AB12 $ echo "i am a boy" | grep -o "am"
grep: illegal option -- o
Usage: grep -hblcnsviw pattern file . . .
AB12 $
PS: Подобный поток, но уже пробовал: Может ли grep показывать только слова, соответствующие шаблону поиска?
Ответы
Ответ 1
Я предполагаю, что это окно Solaris, к которому вы подключаетесь. Версия Solaris grep
не имеет опции -o
. Таким образом, вы можете
- установите GNU grep в поле Solaris (возможно, он уже установлен в
/usr/sfw/bin
, или вам может быть повезло с pkg install //solaris/text/gnu-grep
); или
- используйте awk вместо этого (см. этот вопрос SO)
Смотрите на моей коробке:
$ uname
SunOS
$ echo "i am a boy" | grep -o "am"
grep: illegal option -- o
Usage: grep -hblcnsviw pattern file . . .
$ echo "i am a boy" | /usr/sfw/bin/ggrep -o "am"
am
Ответ 2
Если у вас perl
:
echo "I am a boy" | perl -lne '/am/ && print $&'
am