Cuando configuro la IFSvariable en un espacio, bashtrata los espacios múltiples como un espacio ( myprogrames un programa que imprime los argumentos de la línea de comandos que recibe):
IFS=" "
x="hello hi world"
./myprogram $x
argv[1] = hello
argv[2] = hi
argv[3] = world
Pero cuando configuro la IFSvariable como una coma, bashno trata las comas múltiples como una coma:
IFS=","
x="hello,,,hi,,,world"
./myprogram $x
argv[1] = hello
argv[2] =
argv[3] =
argv[4] = hi
argv[5] =
argv[6] =
argv[7] = world
¿Porqué es eso?

Respuestas:
Esto está documentado en
man bash. Una sola aparición de cualquier carácter en IFS que no sea un espacio en blanco delimita un campo.De
man bash:Ejemplos: división de campo
Si IFS no tiene caracteres de espacio en blanco, entonces el espacio en blanco se incluye en los campos:
Si IFS tiene espacios en blanco y una coma, entonces las secuencias de espacios en blanco, seguidas de una coma, seguidas de secuencias de espacios en blanco, se tratan como un delimitador único:
Las secuencias de comas se interpretan como secuencias de campos vacíos:
Ejemplos: espacios en blanco iniciales y finales
Si IFS no contiene espacios en blanco, los espacios en blanco iniciales y finales se mantienen en los campos:
Si IFS contiene espacios en blanco, se eliminan las secuencias de espacios en blanco iniciales o finales:
fuente
awkcon la-F'\t'opción ocut. Alternativamente, si tiene una versión reciente debash, puede analizar los campos usandoreadarrayla-d$'\t'opción.