Usando um grep
que sabe sobre -o
:
$ printf '%s\n' "$string" | grep -o '\<Icecream[^[:blank:]]*'
Icecream123
O padrão \<Icecream[^[:blank:]]*
corresponde à string Icecream
(onde o I
é precedido por um caractere não pertencente à palavra, ou o início da linha) seguido por zero ou mais não-brancos (não espaços ou tabulações) .
Usando awk
:
$ printf '%s\n' "$string" | awk -v RS=' ' '/^Icecream/'
Icecream123
O programa awk
divide a sequência em registros separados por espaço e testa cada um deles. Ele imprimirá os que começarem com a string Icecream
.
Usando mawk
ou GNU awk
, você também pode usar
printf '%s\n' "$string" | awk -v RS='[[:blank:]]' '/^Icecream/'
pois eles interpõem RS
como uma expressão regular se contiver mais de um caractere.
Com sed
, de maneira semelhante a grep
:
$ printf '%s\n' "$string" | sed 's/.*\(\<Icecream[^[:blank:]]*\).*//'
Icecream123
Usando /bin/sh
:
set -- Icecream123 AirplaneBCD CompanyTL1 ComputerYU1
for string; do
case $string in
Icecream*)
printf '%s\n' "$string"
break
esac
done
Perl (com uma pequena ajuda de tr
):
$ printf '%s\n' "$string" | tr ' ' '\n' | perl -ne '/Icecream\S*/ && print'
Icecream123
ou apenas
$ printf '%s\n' "$string" | perl -ne '/(Icecream\S*)/ && print $1, "\n"'
Icecream123