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>$1imprime a linha atual em um arquivo cujo nome é o primeiro campo.
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!
Tags text-processing awk