Quiero obtener todas las líneas de un texto en una sola línea. Soy un principiante en la codificación tratando de aprender haciendo. He pasado cuatro horas tratando de resolver este problema. Sé que hay una solución simple para este problema. Esto es lo que he estado intentando.
sed -e 'N; s / \ n //' myfile.txt #No hace nada sed -e: a -e N -e 's / \ n / /' -e ta myfile.txt #outout todo en mal estado y no puedo hacer la cabeza ni la cola de la sintaxis gato myfile.txt | tr -d '\ n'> myfile.txt # Elimina todas las líneas
Aquí está el archivo de texto:
500212 262578-4-4 23200 GRIFFITH LABORATORIES LTD GRIFFITH LABORATORIES CONSEJO DEL CONDADO DE DUBLÍN DEL SUR OFICINA OFICINA (INDUSTRIAL) Lista valorable 2 Polígono industrial de Pineview Firhouse Road Knocklyon 31 dic 2007 01 ene 2008 "
No puedo entender dónde me he equivocado ...

cat reval_details.asp?Pno=500211.txt | tr -d '\n' > new_reval_details.asp?Pno=500211.txttr -d '\n' <input.txt > output.txt: evitar el uso inútil del gato y usar una tubería menos innecesaria.Aquí está. Es otra solución y simple, fácil.
fuente
echo `cat Input.txt` > Output.txttambién funciona, solo otra variantetrsolución.MÉTODO SIMPLE
Otro método usando awk,
Salida:
Nota:
ORS = '' -> Este es su separador de campo, puede tener cualquier carácter entre comillas simples como separador de campo. Usando este método awk podemos incluir espacios y todos los caracteres.
Espero que esto pueda ayudar!
fuente
man awkNo es necesario poner la etiqueta
:afuera de la instrucción principal, tampoco se-enecesita la opción necesaria; finalmente, el/$/es superfluo (cada línea tiene un carácter EOL).Mejorando otras respuestas, uno obtiene
Lo cual es más claro si se escribe de la siguiente manera,
El comando funciona de la siguiente manera:
Nagrega la siguiente línea al espacio de patrón (multilínea), que ya contiene la línea actual;s/\n/ /sustituya el carácter de nueva línea\ngenerado porNcon un espacio;tava a la línea del script que sigue a la etiqueta:a, siempre y cuando la sustitución en el paso 2 haya sido exitosa , es decir , si la sustitución se produjo, la ejecución salta al paso 1 sin "presionar" el final del script, es decir , sin leer otra línea de entrada.Tenga en cuenta lo siguiente;
sedlee las líneas del archivo de entrada una por una en orden, comenzando desde la primera línea ;:aes solo una etiqueta, no un comando a ejecutar;Nes, en principio, ejecutado en cualquier línea, peros/\n/ /(en principio ejecutado en cualquier línea) tiene éxito en cualquier línea que no sea la última , entoncestahace que el final del script sea accesible solo cuando se lee la última línea de entrada (la única línea dondesfalla), por lo quepse ejecuta el comando implícito .Entonces, el script básicamente lee en la primera línea de entrada y sigue agregando las siguientes líneas una por una, sustituyendo cada vez la nueva línea con un espacio; después de que se agregue la última línea (y se
\ncambie en un espacio),Nno se puede agregar ninguna línea,sfalla,tase omite, se alcanza el final del script ypse ejecuta la instrucción rint implícita en el espacio de patrón de 1 línea looong actual .La
-iopción sustituye el archivo de entradafilecon todo el espacio de patrón de 1 línea.fuente
GEDIT:
Buscar y reemplazar
\ncon un espacio ''.Puede obtener la ventana de reemplazo yendo a 'Buscar' -> 'Reemplazar'
o mediante el acceso directo keybpard Ctrl+H
Ver captura de pantalla a continuación:
Su texto original está en las líneas 1-14.
El resultado está en la línea 16.
fuente
Creo que la forma más fácil de hacer esto es:
http://ss64.com/bash/paste.html
fuente
Prueba esto
http://anandsekar.github.io/joining-all-lines-in-a-file-using-sed/
fuente
Creo que simplemente estaba olvidando que necesitaba decirle a sed que redirija la salida de yourfile.txt al resultado deseado, newfile.txt. Este parece ser el comando que necesita, pero sólo si los archivos que están tratando de fusión no son demasiado grandes para los búferes de sed:
sed -e :a -e N -e 's/\n/ /' -e ta yourfile.txt >newfile.txt. Acredite a otro foro aquí , donde discuten las capacidades de sed. He probado el comando y funcionó para mí.fuente
-iinterruptor modificará el archivo original en línea , por lo que no hay necesidad de enviarlo a otro archivo. ¡Pero ten cuidado!a' sed -i :a -e N -i 's/\n/ /' -e ta reval_details.asp?Pno=500214.txt sed: can't find label for jump to' sed -e: a -e N -i 's / \ n / /' -e ta reval_details .asp? Pno = 500214.txt sed: no se puede leer s / \ n / /: No existe tal archivo o directorio #Cualquier idea.Solución pura de bash:
fuente
Si fuera yo, lo abriría en vim y presionaría Shift+ Jvarias veces.
fuente
Escriba dentro de vim y presione Entrar:
fuente
Enfoque de Python:
AWK:
fuente