Corresponde os dados da matriz aos dados do arquivo?

1

Estou tentando comparar os dados de uma matriz com a lista dos dias da semana assim:

MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
SUNDAY

Os dados dos arquivos são assim:

Name1,Tuesday
Name2,Friday
Name3,Sunday
Name4,Wednesday
Name5,Thursday
Name6,Saturday

A saída deve ser:

MONDAY 
TUESDAY Name1
WEDNESDAY Name4
THURSDAY Name5
FRIDAY Name2
SATURDAY Name6
SUNDAY Name3

Eu posso cortar os dados pela vírgula em dois. Eu queria saber se é possível combinar os dados do arquivo com os dados dentro da matriz.

    
por Scooter Douglass 23.11.2015 / 01:29

1 resposta

1

Se o arquivo1 tiver os dias da semana e o arquivo2 tiver os dias e os nomes, então:

$ awk -F, 'FNR==NR{a[toupper($2)]=$1;next} {print $1,a[$1]}' file2 file1
MONDAY 
TUESDAY Name1
WEDNESDAY Name4
THURSDAY Name5
FRIDAY Name2
SATURDAY Name6

Como funciona

  • -F,

    Use uma vírgula como separador de campos.

  • FNR==NR{a[toupper($2)]=$1;next}

    Enquanto estivermos lendo o primeiro arquivo nomeado, arquivo2, inclua uma entrada na matriz associativa a com a chave como a versão em maiúsculas do dia e o valor como o nome. Em seguida, pule o restante dos comandos e pule para a linha next .

  • print $1,a[$1]

    Se chegarmos aqui, estamos trabalhando no segundo arquivo. Nesse caso, imprima o dia e o nome que recuperamos da matriz associativa a .

por 23.11.2015 / 01:34

Tags