shell - sustituir - sed linux reemplazar
eliminando el nuevo carácter de línea de la secuencia entrante usando sed (2)
Esto podría funcionar para usted:
printf "{new/nto/nlinux}" | paste -sd'' ''
{new to linux}
o:
printf "{new/nto/nlinux}" | tr ''/n'' '' ''
{new to linux}
o:
printf "{new/nto/nlinux}" |sed -e '':a'' -e ''$!{'' -e ''N'' -e ''ba'' -e ''}'' -e ''s//n/ /g''
{new to linux}
Soy nuevo en shell scripting y estoy tratando de eliminar el nuevo carácter de línea de cada línea con SED. esto es lo que he hecho hasta ahora:
printf "{new/nto/nlinux}" | sed '':a;N;s//n/ /g''
elimina solo el primer carácter de línea. En algún lugar encontré este comando:
printf "{new/nto/nlinux}" | sed '':a;N;$!ba;s//n/ /g''
pero da: "ba: Evento no encontrado".
si lo hago:
printf "{new/nto/nlinux}" | sed '':a;N;s//n/ /g'' | sed '':a;N;s//n/ /g''
luego da salida correcta pero estoy buscando algo mejor ya que no estoy seguro de cuántos caracteres nuevos obtendré cuando ejecute el script. La corriente entrante proviene de echo o printf o de alguna variable en script. Gracias por adelantado
Para eliminar nuevas líneas, use tr:
tr -d ''/n''
Si desea reemplazar cada nueva línea con un solo espacio:
tr ''/n'' '' ''
El error ba: Event not found
proviene de csh, y se debe a que csh intenta emparejar !ba
en su lista de historial. Puedes escapar de !
y escribe el comando:
sed '':a;N;$/!ba;s//n/ /g'' # Suitable for csh only!!
pero sed es la herramienta incorrecta para esto, y sería mejor usar un shell que maneje las cadenas entre comillas más razonablemente. Es decir, deja de usar csh y comienza a usar bash.