Dividir um arquivo em vários arquivos com base no valor da primeira coluna [duplicado]

7

Já vi soluções para dividir um arquivo com relação à correspondência de padrões e à correspondência de linha, mas o que desejo é o seguinte. O cenário é, digamos que eu tenha um arquivo file1 -

A.B|100|20
A.B|101|20
A.X|101|30
A.X|1000|20
B.Y|1|1

Agora, quero dividir esse arquivo em três arquivos diferentes, com base apenas na primeira coluna em que o primeiro arquivo seria todas as linhas contendo A.B na primeira coluna, o segundo arquivo deve ter todas as linhas com A.X e assim por diante.

Se a primeira coluna mudar em de qualquer forma , deve haver um novo arquivo criado para essas linhas. Existe alguma maneira de fazer isso com bash ou awk ?

Como não há como saber de antemão qual é o valor da primeira coluna, não consegui usar nenhum recurso como split ou cut . Obrigado pela ajuda antecipadamente!

    
por Zzrot 23.07.2016 / 00:10

1 resposta

15

Tente:

awk -F\| '{print>$1}' file1

Isso grava cada linha em um arquivo com o nome da primeira coluna.

Como funciona:

  • -F\| define o separador de campo como | .

  • print>$1 imprime a linha atual em um arquivo cujo nome é o primeiro campo.

por 23.07.2016 / 00:19