Corresponder colunas específicas a outro arquivo

1

Eu tenho dois arquivos abaixo de fileA e fileB. os primeiros três dígitos da coluna2 (arquivoA) serão correspondidos da coluna1 (arquivoB). Coluna1 (arquivoA) deve ser igual a 63.

fileA

 63,918234
 64,918093
 63,920983

fileB

 918,XXX
 920,YYY

Até agora, eu tenho esse código que imprime apenas as linhas de fileA.

 awk -F~ 'NR==FNR{a[$1]=$1;next}{n=substr($2,1,3); sub(/^0+/, "", n); for(i in a)if(n~"^"a[i] && $1 ~"63")print $0}' fileB fileA

Minha saída esperada é

63,918234,XXX
63,920983,YYY
    
por User101 06.01.2017 / 02:44

1 resposta

1

Talvez você esteja sendo enganado pelo fato de que, com um separador de campos não padrão, awk não remove os espaços em branco iniciais? Possivelmente, a abordagem mais fácil é forçar os campos a serem tratados numericamente:

$ awk -F, 'NR==FNR {a[$1+0]=$2;next} $1+0==63 {print $0","a[substr($2,1,3)+0]}' fileB fileA
 63,918234,XXX
 63,920983,YYY
    
por 06.01.2017 / 03:46