Comandos de tubulação em $ ()

1

Este é um exemplo de um script de shell que estou tentando executar, mas em vez de imprimir o resultado do grep, ele imprime a string inteira. Não é possível canalizar quando em $() ?

i="the cat is a crazy"; word=$( echo $i | grep cat); echo $word;
    
por Jeremy 15.02.2017 / 20:08

2 respostas

1

Você acabou de executar

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

Do manual :

Grep print lines matching a pattern

Você quer usar -

-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
    
por 15.02.2017 / 20:20
0

Você deseja que grep -o obtenha apenas uma única palavra de uma linha. O comportamento padrão de grep é imprimir toda a linha em que uma correspondência é encontrada.

    
por 15.02.2017 / 20:18