N’imprimer que le mot correspondant, pas la ligne entière à travers grep

Je suis familier avec la programmation shell en bash, mais pour une raison quelconque egrep -o pour imprimer uniquement les mots correspondants ne fonctionne pas et affiche une erreur comme ci-dessous.

L’environnement est la console unix ksh sur le mastic et non pas le terminal Linux ou Ubuntu …… tout conseil est apprécié!

Entrée et sortie du terminal:

 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 ] [ ssortingngs ] [ 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: Fil similaire mais déjà essayé: Est-ce que grep ne peut afficher que les mots correspondant au modèle de recherche?

Je suppose que c’est une boîte Solaris à laquelle vous vous connectez. La version de Solaris de grep n’a pas l’option -o . Donc, vous pouvez soit

  • installez le GNU grep sur votre boîte Solaris (il pourrait déjà être installé dans /usr/sfw/bin , ou vous pourriez avoir de la chance avec pkg install //solaris/text/gnu-grep ); ou
  • utilisez plutôt awk (voir cette question SO )

Voir sur ma boite:

 $ 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 

Si vous avez perl :

 echo "I am a boy" | perl -lne '/am/ && print $&' am