while IFS=, read -r input1 input2; do
# do stuff with "$input1" and "$input2"
done <file.txt
A definição de IFS
para uma vírgula para o comando read
fará com que divida cada linha de entrada por vírgulas. Os dois campos da linha serão lidos em input1
e input2
.
Se houver mais campos do que dois em qualquer linha, os dados "restantes" serão colocados em input2
.
Dependendo do que você deseja fazer com os dados, isso pode ou não ser uma boa ideia. Veja Por que usar um shell loop para processar texto considerado uma prática ruim?
Você notará que awk
é particularmente útil para analisar dados como este, sem a necessidade de um loop:
$ awk -F, '{ printf("Line %d:\n\tField 1 = %s\n\tField 2 = %s\n", NR, $1, $2) }' file.txt
Line 1:
Field 1 = one
Field 2 = two
Line 2:
Field 1 = three
Field 2 = four
Line 3:
Field 1 = five
Field 2 = six
Line 4:
Field 1 = six
Field 2 = seven
Line 5:
Field 1 = red
Field 2 = tree