Después de un poco de procesamiento, tengo mi archivo de entrada como se muestra a continuación.
archivo1.txt
12345|john|student
43321|jack|professor
78965|alex|lecturer
Necesito seguir procesando el archivo anterior, por lo que también necesito un interruptor de línea al final de la línea. Actualmente, puedo lograrlo de la siguiente manera.
sed 's/$/|/' file1.txt
El comando anterior da como resultado la salida como,
12345|john|student|
43321|jack|professor|
|
78965|alex|lecturer|
Como podemos ver, el |
se añade a las líneas en blanco también. Cuando traté de eliminar el |
carácter nuevamente desde líneas en blanco usando el siguiente comando,
sed 's/|//g' file1.txt
El |
el personaje se está borrando en todas partes. ¿Cómo puedo eliminar solo el |
? en líneas en blanco? Necesito mantener la línea en blanco también.
Respuesta aceptada:
Desde su original, puede agregar |
a líneas que no están en blanco:
Usando sed
:
sed -e '/^$/!s/$/|/' file
Usando perl
:
perl -lpe 's/$/|/ if length' file
Si desea eliminar |
de líneas que están en blanco (en la segunda versión):
perl -lpe 's/|// if length == 1'