Como exportar apenas uma linha se uma coluna contiver uma determinada string [closed]

0

Eu tenho 4 colunas e a terceira contém as letras A-G. Eu só quero produzir uma linha se a coluna não estiver vazia ou contiver um A-G. Este é o meu código agora. Lendo de um arquivo compactado.

bzcat $file | cut -d, -f3,4,20,21 |grep -E '[A-G]'|head -100 
    
por G Stevens 28.02.2018 / 17:37

1 resposta

0

Sua pergunta é um pouco confusa, mas parece claro que a melhor ferramenta para o trabalho será awk . Se eu entendi o que você está procurando, tente isto:

awk 'BEGIN{FS=","}$3~/[A-G]+/{print}'
  1. FS= define o separador de campo, ou seja. o que separa suas colunas.

  2. $3 é o terceiro campo, ou seja. coluna.

  3. ~/[A-G]+/ diz awk para corresponder a uma expressão regular de apenas caracteres A-G ..

awk é um editor de fluxo orientado por linhas. Ele irá prosseguir através do seu fluxo de entrada, por exemplo. seu bzcat $file | e verifique o terceiro 'campo' de cada linha para a regex correspondente e, se corresponder, executará a lista de comandos dentro das chaves, nesse caso, apenas uma instrução print simples, cujo padrão é imprimir toda a linha.

awk é um programa excelente e muito poderoso / rico em recursos, e vale a pena aprender, pelo menos, o básico. Confira a página man para saber mais.

    
por 28.02.2018 / 18:15

Tags