Utilitário padrão Unix / Linux para testar cada linha de entrada

0

Estou escrevendo um script Bash que deve testar se cada linha na entrada atende a determinadas condições.

Existe uma maneira de pegar o predicado e reduzir toda a linha para 0 ou 1, então eu não tenho que codificar o código de loop eu mesmo usando um utilitário rotineiramente padrão ou prontamente disponível nas distribuições Linux?

    
por Arkonix 09.04.2018 / 11:31

1 resposta

-1

Dados de amostra (queremos que todas as linhas que contêm " querem "):

$ cat x
not this
want this
not that
want that

Você pode usar awk :

  • Imprimir um 1 se a linha corresponder a regex /want/
  • Imprimir um 0 se a linha não corresponder a
$ cat x | awk '{if(match($0,/want/)){print 1}else{print 0}}'
0
1
0
1

Ou tente sed :

  • Substitua as linhas que contêm apenas 1 com 0 (caso contrário, elas passarão como 1 )
  • Substitua as linhas que contêm " deseja " por 1
  • Substitua as linhas que não são 1 por 0
$ cat x | sed -re 's/^1$/0/' -e 's/^.*want.*$/1/' -e 's/^[^1][^$].*$/0/'
0
1
0
1
    
por 09.04.2018 / 11:48