Tentando usar o awk implementando uma condição e uma implicação

0

Eu tenho um arquivo contendo 8 colunas, Uma das minhas tarefas é obter os valores da Coluna 3 e se o valor da linha não for igual a 123 as 8 colunas serão impressas e, portanto, se a coluna 3 for igual a 123 nada será impresso

parte do programa é - >

testing='echo $C3  | awk '!/123/ {print $C1, $C2, $C3, $C4, $C5, $C6, $C7, $C8,}'>>final.txt' 

e o erro relacionado é awk: campo ilegal $ (), nome "C1"  registro de entrada número 1, arquivo  número da linha de origem 1

onde descobri que para as linhas que não contêm 123: pode ser roteirizado como awk '! / 123 /' de link

Eu também tentei

testing='echo $C3  | awk '!/123/ ; END {print $C1, $C2, $C3, $C4, $C5, $C6, $C7, $C8,}'>>final.txt' 

mas também dá um erro.

obrigado antecipadamente

    
por user146120 05.12.2015 / 10:08

1 resposta

1

awk é projetado especificamente para lidar com arquivos colunares. Ele dividirá automaticamente cada linha de entrada no espaço em branco (ou qualquer outra coisa que você forneça por meio da opção -F ) e as colunas ficarão disponíveis para awk como $1 , $2 , ..., $N .

Portanto, para imprimir linhas cuja terceira coluna (como definida por espaço em branco) não é 123 , você faria:

awk '$3!="123"' file

A ação padrão de awk quando algo é avaliado como true é imprimir. Portanto, o comando acima imprimirá todas as linhas de file cuja terceira coluna não é 123 .

    
por 05.12.2015 / 13:11