Faça o perl regex search exit com falha se não for encontrado

1

Com grep , recebo um código de retorno de falha / status de saída se nenhum resultado for encontrado.

Como posso fazer a mesma coisa com o perl?

Basicamente, eu gostaria de mudar o seguinte para que saia com o status 1 se nenhuma correspondência for encontrada.

echo foo | perl -nle'print if m{bar}'
    
por hpique 04.12.2014 / 05:12

2 respostas

1

Rápido e sujo:

echo foo | perl -nlE'print if $t ||= m{bar} }{ exit 1 if !$t'

Explicação:

O "Beijo Eskimo" ™ }{ fecha o loop while (que está implícito em -n ). Na declaração if , uma variante $t é 1 assim que a primeira correspondência acontece.

    
por 04.12.2014 / 13:09
0

Se eu resolvesse o problema "rápido e sujo", tentaria algo assim

echo foo | perl -nle' print if m{bar} or print 1'

Espero que isso tenha sido útil.

    
por 04.12.2014 / 05:44