Utilizando los siguientes datos:

$cat date1.csv
 Bob,2013-06-03T17:18:07
 James,2013-06-03T17:18:07
 Kevin,2013-06-03T17:18:07

$cat date2.csv
 2012-12-02T18:30:31
 2012-12-02T18:28:37
 2013-06-01T12:16:05

Cómo puede date1.csv y fecha2.los archivos csv se combinan? Salida deseada:

$cat merge-date1-date2.csv
 Bob,2013-06-03T17:18:07,2012-12-02T18:30:31
 James,2013-06-03T17:18:07,2012-12-02T18:28:37
 Kevin,2013-06-03T17:18:07,2013-06-01T12:16:05

Por favor nota: la mejor solución será capaz de gestionar un gran número de líneas.

  • su pregunta dosent resaltar cualquier lógica específica para combinar los archivos , si usted sólo quiere poner de lado a lado una simple pasta va a hacer ….. pero que dosent servir cualquier aparente/propósito lógico …. como en Bob,2013-06-03T17:18:07,2012-12-02T18:30:31 — nada trae togeather excepto por la virtud de su posición en el archivo de entrada. Podría dar algo más de información sobre lo que están tratando de hacer/lograr ?
  • Esta pregunta debe ser un MODO de preguntas frecuentes ahora.
  • posibles duplicados de postal de columnas de archivos separados juntos en bash
InformationsquelleAutor blehman | 2013-06-04

4 Comentarios

  1. 45

    Que estaban en la pista con pegar(1):

    $ paste -d , date1.csv date2.csv 
    Bob,2013-06-03T17:18:07,2012-12-02T18:30:31
    James,2013-06-03T17:18:07,2012-12-02T18:28:37
    Kevin,2013-06-03T17:18:07,2013-06-01T12:16:05

    Es un poco más claro a partir de tu pregunta si hay espacios en esas líneas. Si usted quiere deshacerse de que en el resultado final, puede utilizar cortar(1) para snip antes de pegar:

     $ cut -c 2- date2.csv | paste -d , date1.csv -
      Bob,2013-06-03T17:18:07,2012-12-02T18:30:31
      James,2013-06-03T17:18:07,2012-12-02T18:28:37
      Kevin,2013-06-03T17:18:07,2013-06-01T12:16:05
    • +1, he probado este fusionar mis dos archivos CSV, pero consiguió los resultados combinados apilados línea por línea, ¿sabes por qué?
    • Se dio cuenta de que puede ser causado por el final de línea, y se encontró una solución de here.
  2. 12

    Otra forma de hacerlo es con pr

    pr -mts, file1 file2

    Prueba:

    [jaypal:~/Temp] cat file1
    Bob,2013-06-03T17:18:07
    James,2013-06-03T17:18:07
    Kevin,2013-06-03T17:18:07
    
    [jaypal:~/Temp] cat file2
    2012-12-02T18:30:31
    2012-12-02T18:28:37
    2013-06-01T12:16:05
    
    [jaypal:~/Temp] pr -mts, file1 file2
    Bob,2013-06-03T17:18:07,2012-12-02T18:30:31
    James,2013-06-03T17:18:07,2012-12-02T18:28:37
    Kevin,2013-06-03T17:18:07,2013-06-01T12:16:05
  3. 3

    Que quería ampliar jaypal la solución, lo he ejecutado en una necesidad de editar los archivos antes de la fusión de las columnas.

    $cat date1.csv
     Bob,2013-06-03T17:18:07
     James,2013-06-03T17:18:07
     Kevin,2013-06-03T17:18:07
    
    $cat date2.csv
     2012-12-02T18:30:31
     2012-12-02T18:28:37
     2013-06-01T12:16:05

    La fusión de la columna 1 de la fecha1.csv con la columna 1 de la fecha2.csv puede realizarse de la siguiente manera:

    $pr -mts, <(cut -d, -f1 date1.csv) date2.csv
     Bob,2012-12-02T18:30:31
     James,2012-12-02T18:28:37
     Kevin,2013-06-01T12:16:05

    Puede aplicar más cambios con un tubo si lo desea:

    $pr -mts, <(cut -d, -f1 date1.csv | sort) date2.csv

    De todos modos, esto ha sido muy útil para mí y sólo quería pasar a lo largo de los conocimientos. Espero que ayude a alguien.

  4. 0

    Si usted sólo quiere pegar columnas específicas de los diferentes archivos de la side-by-side,
    puede utilizar una combinación de pegar y cortar.

    Por ejemplo, si tiene tres archivos con el mismo sentido, sólo que difieren en algunas de las columnas que desea reunir:

    $ head file1.csv
    chr1H   1   240 RLC 2   138 239 0.5774059
    chr1H   641 1787    RLC 12  1135    1146    0.9904014
    chr1H   2009    3436    RLC 15  1413    1427    0.9901892
    chr1H   4935    6106    RLG 12  1060    1171    0.9052092
    chr1H   11523   11997   RLG 4   371 474 0.7827004
    chr1H   11998   12882   RLX 9   776 884 0.8778281
    chr1H   20340   21529   RLC 13  1177    1189    0.9899075
    chr1H   27889   36240   RLC 82  8118    8351    0.9720991
    chr1H   36241   39978   RLC 36  3542    3737    0.9478191
    chr1H   40384   41273   RLX 10  880 889 0.9898763
    $ head file2.csv
    chr1H   1   240 RLC 1   39  239 0.1631799
    chr1H   641 1787    RLC 11  1049    1146    0.9153578
    chr1H   2009    3436    RLC 6   594 1427    0.4162579
    chr1H   4935    6106    RLG 11  995 1171    0.8497011
    chr1H   11523   11997   RLG 3   275 474 0.5801688
    chr1H   11998   12882   RLX 4   378 884 0.4276018
    chr1H   20340   21529   RLC 11  979 1189    0.8233810
    chr1H   27889   36240   RLC 74  7238    8351    0.8667225
    chr1H   36241   39978   RLC 31  3047    3737    0.8153599
    chr1H   40384   41273   RLX 10  880 889 0.9898763
    $ head file3.csv
    chr1H   1   240 RLC 2   138 239 0.5774059
    chr1H   641 1787    RLC 12  1135    1146    0.9904014
    chr1H   2009    3436    RLC 15  1413    1427    0.9901892
    chr1H   4935    6106    RLG 12  1060    1171    0.9052092
    chr1H   11523   11997   RLG 4   371 474 0.7827004
    chr1H   11998   12882   RLX 9   776 884 0.8778281
    chr1H   20340   21529   RLC 13  1177    1189    0.9899075
    chr1H   27889   36240   RLC 82  8118    8351    0.9720991
    chr1H   36241   39978   RLC 36  3542    3737    0.9478191
    chr1H   40384   41273   RLX 10  880 889 0.9898763

    La primera de las columnas de los archivos son idénticos. Queremos mantener a estos, sino que además se pegue el 8 de columna de cada archivo de lado-por-lado:

    $ paste file1.csv file2.csv file3.csv | cut -f 1,2,3,4,8,16,24 | head

    resultados en:

    chr1H   1   240 RLC 0.5774059   0.1631799   0.0000000
    chr1H   641 1787    RLC 0.9904014   0.9153578   0.6448517
    chr1H   2009    3436    RLC 0.9901892   0.4162579   0.2081289
    chr1H   4935    6106    RLG 0.9052092   0.8497011   0.1690862
    chr1H   11523   11997   RLG 0.7827004   0.5801688   0.0000000
    chr1H   11998   12882   RLX 0.8778281   0.4276018   0.1119910
    chr1H   20340   21529   RLC 0.9899075   0.8233810   0.1068124
    chr1H   27889   36240   RLC 0.9720991   0.8667225   0.4043827
    chr1H   36241   39978   RLC 0.9478191   0.8153599   0.3914905
    chr1H   40384   41273   RLX 0.9898763   0.9898763   0.3217098

    Esto necesita casi nada de memoria y es, probablemente, tan rápido como se pone.

Dejar respuesta

Please enter your comment!
Please enter your name here