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.
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