texto sustituir script reemplazar para lineas linea insertar especiales espacios eliminar caracteres blanco shell sed csh

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.