tente
awk -F\| '{ print $1 > $2 ; }' file
onde
-
-F\|
informa ao awk para usar|
como separador | precisa ser escapado. -
> $2
redirect print para o valor de$2
.
no caso de muitos arquivos (> 10):
for x in $(awk -F\| '!a[$2]++ { print $2}' file)
do
awk -F\| -v f="$x" '$2 == f { print $1}' file > "$x"
done
- primeiro awk meramente lista uniq filename
- 52 arquivos estão OK, isso pode ficar lento se centenas de arquivos.
outra alternativa, campo fornecido é "seguro" para colocar no shell
awk -F\| '{printf "echo %s >> %s\n",$1,$2;}' file | bash
- não se esqueça de excluir o arquivo X antes, em caso de nova execução.