Reemplazar el nuevo carácter de línea con una tubería y un nuevo carácter de línea

Estoy usando ksh .

Tengo un file temp.txt con algunos datos delimitados por tubería.

 one|two|three|four|five abc|def|pqr|lmn|xyz 

Como está claro en el ejemplo, el logging finaliza con un nuevo carácter de línea después del valor de datos en la última columna.

Sin embargo, quiero que el logging termine con un delimitador de pipa y un nuevo carácter de línea como a continuación:

 one|two|three|four|five| abc|def|pqr|lmn|xyz| 

Intenté los siguientes commands pero aún no tuve éxito:

 tr '\n' '|\n' < temp.txt 

y

 sed -i 's/\n/|\n/g' temp.txt 

¿Me estoy perdiendo de algo?

Solutions Collecting From Web of "Reemplazar el nuevo carácter de línea con una tubería y un nuevo carácter de línea"

A less que haya unido líneas, \n no aparece en el espacio de patrones de sed : el ancla de final de línea es $ .

Entonces con GNU sed:

 sed -i 's/$/|/' temp.txt 

Puedes usar paste :

 $ :|paste -d'|' file - > new_file one|two|three|four|five| abc|def|pqr|lmn|xyz| 

o perl :

 perl -i.bak -ple '$_.="|"' file 

Con GNU sed , puede replace el final de línea con | mediante el uso:

 sed -i 's/$/|/' temp.txt 

Eso coincidirá con el final de la línea y la "replaceá" con | , pero por supuesto, la línea aún terminará y mantendrá su \n

Puedes usar GNU sed :

 sed -i 's/.*/&|/' file 

Carácter especial & corresponde al patrón emparejado en el RHS.