Errores de Ubuntu (14 y 16) Bash con bucles printf de entrada que contienen caracteres en minúscula "n"

Tengo algunos scripts de bash que he estado ejecutando en Ubuntu 14.04 y 16.04 durante más de un año. Alguna actualización reciente de Ubuntu ha roto bash y no puedo entender cómo solucionar esto.

Ejemplo:

#!/bin/bash
INPUT=myinput.txt
OUTPUT=myoutput.txt
ACTION1="0;"

cat $INPUT | while read LINE
do
printf "\t\"~${LINE}\"\t\t$ACTION1\n" >> $OUTPUT
done

mi script luego recorre el archivo haciendo la declaración printf de la siguiente manera pero esta es la salida producida

"~jetmo" 0;
"~spamme" 0;
"~baidu" 0;

contenido de ejemplo de myinput.txt

jetmon
spammen
baidu

Las líneas de entrada que contienen un carácter n minúscula se eliminan ?? Me estoy perdiendo algún cambio importante en bash que ocurrió, esto comenzó a suceder hace una semana y ahora me está volviendo loco.

He intentado cambiar #! / Bin / bash a #! / Bin / sh con los mismos resultados.

También probé este método de recorrer el archivo de entrada y aún así obtener los mismos resultados.

#!/bin/bash
INPUT=myinput.txt
OUTPUT=myoutput.txt
ACTION1="0;"
while read LINE
do
printf "\t\"~${LINE}\"\t\t$ACTION1\n" >> $OUTPUT
done < $INPUT

Intenté la sugerencia de los comentarios usando echo

echo -e -n "\t\"~${LINE}\"\t\t$ACTION1\n" >> $OUTPUT

y ahora obtengo esta salida

-e -n "~jetmo" 0;
-e -n "~spamme" 0;
-e -n "~baidu" 0;

Ejecutar hexdump -C myinput.txt da esta salida

00000000  6a 65 74 6d 6f 6e 0a 73  70 61 6d 6d 65 6e 0a 62  |jetmon.spammen.b|
00000010  61 69 64 75 0a 0a                                 |aidu..|
00000016

También cambió todos los nombres de las variables a minúsculas como lo sugirió Michael, pero aún así obtiene los mismos resultados.

#!/bin/bash
input=myinput.txt
output=myoutput.txt
action1="0;"

cat $input | while read line
do
printf "\t\"~${line}\"\t\t$action1\n" >> $output
done

LA SOLUCIÓN El misterio está resuelto

gracias a todos, perohttps://stackoverflow.com/users/96588/l0b0 clavado en la cabeza. Tuve unIFS=$'\n' escondiéndome antes en mi guión.

Ahora tengo este formato final, mejor y más seguro de printf gracias a las recomendaciones de Nahuel y Charles y está funcionando al 100% ... no puedo agradecerles lo suficiente.

#!/bin/bash
input=myinput.txt
output=myoutput.txt
action1="0;"
while IFS= read -r LINE
do
printf '\t"~%s"\t\t%s\n' "${LINE}" "$ACTION1" >> "$output"
done < $input1

Respuestas a la pregunta(3)

Su respuesta a la pregunta