GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo unir varias líneas en una en un archivo en Linux

En el tutorial de hoy sobre la administración de archivos de Linux, veremos enfoques válidos para unir varias líneas dentro de un archivo en una sola línea. Al final de este artículo, habrá agregado algunos hitos informáticos a su experiencia de administración de archivos de Linux.

[ También te puede interesar:Cómo unir dos archivos de texto en Linux ]

Las posibilidades/oportunidades para los usuarios que explotan el sistema operativo Linux a través de la interfaz de línea de comandos siguen siendo infinitas. Una de esas posibilidades es manipular un archivo de varias líneas en un archivo de una sola línea a través de una serie de comandos de Linux. El objetivo de fusionar tales líneas puede ser tan simple como la necesidad de agregar delimitadores personalizados al archivo de destino.

Enunciado del problema

Dado que este tutorial se centrará en fusionar varias líneas en una sola línea en un archivo de destino, debemos crear ese tipo de archivo para fines de referencia y completarlo con algunos datos de varias líneas.

$ sudo nano sample_file.txt

Según la captura de pantalla anterior, estamos tratando con un archivo (sample_file.txt ) con seis líneas, y hay tres enfoques para unir estas seis líneas:

  1. Sin delimitadores:¡Me encantan los tutoriales de sugerencias de LinuxShell!
  2. Con un delimitador de un solo carácter:I Genuinely,Love,Linux.Shell,Tips,Tutorials!
  3. Con delimitadores de varios caracteres:I Genuinely;Love;Linux;Shell;Tips;Tutorials!

Cómo unir varias líneas en una sola línea en un archivo

Echemos un vistazo a estos tres enfoques para unir varias líneas dentro de un archivo en una sola línea en Linux.

1. Usando el Comando sed

El poder del sed La utilidad de línea de comandos de procesamiento de texto nos permitirá unir las seis líneas en nuestro archivo de texto de muestra al abordar los tres enfoques discutidos anteriormente en referencia a casi la misma sintaxis de código.

Sin delimitadores:

$ sed ':a; N; $!ba; s/\n//g' sample_file.txt  

Con espaciado:

$ sed ':a; N; $!ba; s/\n/ /g' sample_file.txt 

Con un delimitador de un solo carácter, p. una coma:

$ sed ':a; N; $!ba; s/\n/,/g' sample_file.txt 

Con delimitador de caracteres múltiples, p. punto y coma y espacio en blanco:

$ sed ':a; N; $!ba; s/\n/; /g' sample_file.txt 

2. Usando el Comando awk

El awk de Linux command es otra herramienta de línea de comandos de procesamiento de texto de buena reputación. Su enfoque para resolver nuestro problema de varias líneas a una sola línea se puede analizar e implementar de la siguiente manera:

Sin delimitadores:

$ awk -v d="" '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

Con espaciado:

$ awk -v d=" " '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

Con un delimitador de un solo carácter, p. una coma:

$ awk -v d="," '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

Con delimitador de caracteres múltiples, p. punto y coma y espacio en blanco:

$ awk -v d="; " '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

3. Usando el comando pegar

La pega El comando solo es ideal para unir varias líneas sin delimitadores, con espaciado y con un delimitador de un solo carácter. Esta utilidad reside en GNU Coreutils paquete, por lo tanto, su disponibilidad en todas las distribuciones del sistema operativo Linux.

Sin delimitadores:

$ paste -sd '' sample_file.txt

Con espaciado:

$ paste -sd ' ' sample_file.txt

Con un delimitador de un solo carácter, p. un guión bajo:

$ paste -sd '_' sample_file.txt

El guión bajo (_) se puede eliminar canalizando el comando pegar a un comando sed:

$ paste -sd '_' sample_file.txt | sed 's/_$/\n/'

Este enfoque no es ideal con delimitadores de varios caracteres, por ejemplo, un punto y coma y un espacio en blanco debido a resultados irregulares como los siguientes:

$ paste -sd '; ' sample_file.txt

4. Usando el Comando tr

El comando tr también es ideal para unir varias líneas sin delimitadores, con espaciado y con un delimitador de un solo carácter.

Sin delimitadores:

$ tr -d '\n' < sample_file.txt

Con espaciado:

$ tr '\n' ' ' < sample_file.txt

Con un delimitador de un solo carácter, p. una coma:

$ tr '\n' ',' < sample_file.txt	

Canalice la salida a un comando sed para deshacerse de las comas adicionales.

$ tr '\n' ',' < sample_file.txt | sed 's/,,$/\n/'

Hemos aprendido con éxito cómo unir varias líneas en una sola línea en un archivo en Linux.


Linux
  1. ¿Cómo agregar varias líneas a un archivo?

  2. Cómo contar líneas en un archivo en UNIX/Linux

  3. ¿Cómo unir varias líneas de nombres de archivo en una sola con delimitador personalizado?

  4. Cómo agregar contenidos de múltiples archivos en un archivo

  5. Linux:¿cómo formatear múltiples sistemas de archivos dentro de un archivo?

Cómo unir varias líneas en una en un archivo en Linux

Cómo mezclar líneas en un archivo en Linux

Cómo invertir líneas en un archivo por caracteres en Linux

Cómo combinar varios archivos PDF en un solo PDF en Linux

Cómo unir/combinar varios archivos de audio en uno solo en Linux

Cómo encontrar las líneas más largas en un archivo en Linux