Archivos de texto MORGE de CLI con orden de clasificación y raíz -- mmand-line campo con text-processing camp askubuntu Relacionados El problema

Morge text files from CLI with sort order and root


1
vote

problema

Español

Tengo una serie de archivos TXT, cada uno con numerosas entradas. Por lo general, fusiono todos los archivos TXT en un archivo de salida usando CAT, sin embargo, se vuelve un poco desordenado porque no puedo estar seguro de lo que vino el archivo de TXT original.

Me preguntaba si hay una manera, usando la línea de comandos, para fusionar primero todos los archivos TXT en orden alfabético y al mismo tiempo agregar el sufijo a la entrada original para notar el archivo.

Por ejemplo, digamos que tengo 2 archivos TXT, cada uno con tres entradas:

file_one :

    Alpha   Bravo    Charlie   

file_two :

    Alpha   Bravo   Delta   

Lo que me gustaría hacer es esto:

  1. fusionar las dos listas en un archivo de salida de salida ordenado en orden alfabético;
  2. Agregue el sufijo para mostrar de qué lista proviene de:

         Alpha_File_One    Alpha_File_Two    Bravo_File_One    Bravo_File_Two    Charlie_File_One    Delta_File_Two   

es esto posible?

Original en ingles

I have a series of txt files, each with numerous entries. I usually merge all the txt files into one output file using cat, however it becomes a little bit messy because I cannot be sure from which original txt file it came from.

I was wondering if there is a way, using the command line, to first merge all the txt files in alphabetical order and at the same time add the suffix to the original entry to note the file it came from.

For example, let's say I have 2 txt files, each with three entries:

File_One:

  Alpha   Bravo    Charlie 

File_Two:

  Alpha   Bravo   Delta 

What I would like to do is this:

  1. Merge the two lists in one output txt file sorted in alphabetical order;
  2. Add the suffix to show from which list it comes from:

       Alpha_File_One    Alpha_File_Two    Bravo_File_One    Bravo_File_Two    Charlie_File_One    Delta_File_Two 

Is this possible?

     
       
       

Lista de respuestas

5
 
vote
vote
La mejor respuesta
 

Como dice Florian, primero debe agregar el nombre de archivo y luego ordenar. Otro método es usar ABCDEFGHIJKLMNABCDEFGHIJKLMN0 :

  $ awk '{printf "%s_%s ", $0, FILENAME}' f1 f2 | sort Alpha_f1 Alpha_f2 Bravo_f1 Bravo_f2 Charlie_f1 Delta_f2   

ABCDEFGHIJKLMNABCDEFGHIJKLMN2 Imprime argumentos en un formato específico, ABCDEFGHIJKLMNABCDEFGHIJKLMN3 Significado Dos cadenas separadas por _ y seguido de una nueva línea. ABCDEFGHIJKLMNABCDEFGHIJKLMN5 y ABCDEFGHIJKLMNABCDEFGHIJKLMN6 Contiene la línea actual y el nombre de archivo respectivamente. He nombrado los archivos f1 y f2 , en este ejemplo.

 

As Florian says, you should first add the filename and then sort. Another method is to use awk:

$ awk '{printf "%s_%s\n", $0, FILENAME}' f1 f2 | sort Alpha_f1 Alpha_f2 Bravo_f1 Bravo_f2 Charlie_f1 Delta_f2 

printf prints arguments in a specified format, %s_%s\n meaning two strings separated by _ and followed by a newline. $0 and FILENAME contain the current line and filename respectively. I have named the files f1 and f2, in this example.

 
 
2
 
vote

Debe hacerlo al revés: primero agregue el sufijo, den fusión y ordenación:

  ABCDEFGHIJKLMNABCDEFGHIJKLMN9   
 

You need to do it the other way around: First add the suffix, den merge and sort:

(sed 's/$/_File_One/' File_One; sed 's/$/_File_Two/' File_Two) | sort  
 
 

Relacionados problema

5  Análisis de un archivo usando herramientas de procesamiento de texto  ( Parsing a file using text processing tools ) 
se ve un archivo: 1140.271257 0.002288454025 0.002763420728 0.004142512599 0 0 0 0 0 0 0 0 0 0 0 1479.704769 0.00146621631 0.003190634646 0.003672029231 0...

1  El uso de SED para agregar caracteres al final de una línea agrega una nueva línea  ( Using sed to add characters at the end of a line adds a new line ) 
Estoy haciendo un script para convertir algunas listas de cubierta mágicas de un formato a otro. Necesito insertar el código de configuración para cada tarjet...

1  Reemplace solo ciertos números usando SED [CERRADO]  ( Replace only certain numbers using sed ) 
cerrado . Esta pregunta necesita detalles o claridad . Actualmente no está aceptando respuestas. ...

14  ¿Hay alguna manera, idealmente usando la línea de comandos, para convertir múltiples archivos .CSV a una hoja de cálculo de múltiples hojas?  ( Is there a way ideally using the command line to convert multiple csv files t ) 
¿Hay una manera, idealmente usando la línea de comandos, para convertir varios archivos de ICSV a una hoja de cálculo de MULTI-hojas? Si no hay una solución...

2  Recortar el comienzo de un archivo de texto  ( Trim beginning of a text file ) 
Tengo un archivo de texto con espacios inesperados al principio y desea recortar el principio y guardarlo. ¿Cómo puedo hacerlo? He intentado un ejemplo muy ...

4  Retire las cotizaciones alrededor de los enteros en un archivo CSV  ( Remove quotes around integers in a csv file ) 
en un archivo CSV grande (& gt; 1 gb) Tengo algo como "34432", "name", "0", "very long description" pero en lugar de eso me gustaría tener 34432, "n...

3  ¿Cómo se puede usar AWK para listar contenedores de Docker?  ( How can awk be used to list docker containers ) 
Estoy buscando usar herramientas a lo largo de las líneas de: grep sed awk para trabajar con la ventana accionaria. Contenedores de listado: do...

0  ¿Cómo copie los contenidos de un archivo y lo concatené en un nuevo archivo?  ( How do i copy contents of a file and concatenate it into a new file ) 
Tengo que hacer nuevos archivos que contengan los contenidos de archivos originales dos veces y luego concatenarlo línea por línea. Por ejemplo: ABCDEFGHIJ...

2  Suma Columna 2 de archivo .csv si la columna 1 es la misma  ( Sum column 2 of csv file if column 1 is the same ) 
Tengo un archivo CSV donde la columna 1 es el nombre de un gen y la columna 2 es un valor asociado con ese gen. Sin embargo, algunos genes tienen múltiples va...

22  ¿Cómo reemplazar los espacios con las nuevas líneas / ingresar en un archivo de texto?  ( How to replace spaces with newlines enter in a text file ) 
Tengo un archivo de texto simple llamado "Ejemplo". Lectura con el comando terminal: ABCDEFGHIJKLMNABCDEFGHIJKLMN1 Salida: abc cdef ghi jk lmnopq rst...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos