Como ordenar os dados do arquivo CSV comparando os dados do arquivo de texto usando o awk como um arquivo TXT?

0

Existem dois arquivos que eu vou extrair os dados:

arquivo1.txt:

Type Serial ID Element Hit_Possibility
Yasuo 19-2 19623 Hasaki 

arquivo2.csv:

Date,Name,Order,Hit Possibility
12-Aug,Ken,1,256
12-Aug,Tom,19,498
12-Aug,Ray,36,753

Como posso combinar dois arquivos em um arquivo de texto com os seguintes resultados:

Type Serial ID Element Hit_Possibility
Yasuo 19-2 19623 Hasaki 498

Aqui está o que eu tentei antes:

awk -F "\"*,\"*" 'NR==1{print $0;next} NR==FNR{Arr[$2]=$NF;next}{split($2,b,"-");if(b[1] in Arr){print $0,Arr[b[1]]}}' file2.csv file1.txt

Acho que não consigo obter os resultados por causa da parte NR == FNR. Como posso obter o arquivo de resultados que quero?

    
por Owen 11.10.2018 / 10:38

2 respostas

3

Você pode tentar este awk:

awk -F, '
   (NR==FNR)&&(NR>1){a[$3]=$4;next}  # Get keys of file2 into array a
   ($2 in a){$0=$0 a[$2]}            # If key in file1 is part of the array a, append value
   NR!=1                             # Print all lines of file1 and file2 except the header
' file2 FS='[ -]' file1
    
por 11.10.2018 / 11:00
0

Você pode simplificar um pouco a resposta do oliv:

awk -F, '
NR==FNR     {a[$3] = $4
             next}
            {print $0, a[$2]
            }
' file2 FS='[ -]' file1
Type Serial ID Element Hit_Possibility 
Yasuo 19-2 19623 Hasaki  498
    
por 11.10.2018 / 15:05