Se for para processamento de texto, o mais óbvio é usar awk
, que é especialmente projetado para isso (embora perl
ou sed
também possa ser usado)
awk -F, '{print "something with "$1" and "$2}'
Se a entrada for um CSV real que poderia ter valores mais complexos, como:
"field, with comma" , "and with
newline", "or ""quotes"""
Você pode querer usar perl
ou python
ou alguns utilitários de análise csv dedicados.
Se os campos tiverem que ser disponibilizados como variáveis de shell, porque por exemplo você precisa executar alguns comandos específicos com esses campos como argumentos, então você faria algo como:
while IFS=, read -r a b rest; do
something-with "$a" "$b"
done
Veja também o GNU parallel
para executar as coisas em paralelo:
PARALLEL_SHELL=sh parallel -C, 'something-with {1} {2}'
Mas cuidado, o GNU parallel
traz uma sobrecarga significativa para que a paralelização valha a pena.
O shell ksh93
pode realmente entender o formato CSV (manipular citações de campos individuais, como no exemplo complexo acima)
while IFS=, read -rS a b rest; do
do-something-with "$a" "$b"
done