Fusion de fichiers CSV: Ajout au lieu de fusion
Donc, fondamentalement, je veux fusionner un couple de fichiers CSV. Im en utilisant le script suivant pour le faire :
paste -d , *.csv > final.txt
Cependant, cela a fonctionné pour moi dans le passé, mais cette fois il ne fonctionne pas. Il ajoute les données uns à côté des autres plutôt que de ci-dessous les uns des autres. Par exemple, deux des fichiers qui contiennent des enregistrements dans le format suivant
CreatedAt ID
Mon Jul 07 20:43:47 +0000 2014 4.86249E+17
Mon Jul 07 19:58:29 +0000 2014 4.86238E+17
Mon Jul 07 19:42:33 +0000 2014 4.86234E+17
Quand fusionné donner
CreatedAt ID CreatedAt ID
Mon Jul 07 20:43:47 +0000 2014 4.86249E+17 Mon Jul 07 18:25:53 +0000 2014 4.86215E+17
Mon Jul 07 19:58:29 +0000 2014 4.86238E+17 Mon Jul 07 17:19:18 +0000 2014 4.86198E+17
Mon Jul 07 19:42:33 +0000 2014 4.86234E+17 Mon Jul 07 15:45:13 +0000 2014 4.86174E+17
Mon Jul 07 15:34:13 +0000 2014 4.86176E+17
Serait ce que quelqu'un sait quelle est la raison derrière cela est? Ou ce que je peux faire à force de fusion ci-dessous les enregistrements?
source d'informationauteur user2233834
Vous devez vous connecter pour publier un commentaire.
En supposant que tous les fichiers csv ont le même format et commencent tous par le même en-tête,
vous pouvez écrire un petit script comme suit pour ajouter tous les fichiers dans un seul et à prendre une seule fois l'en-tête.
Notes:
head -1
ouhead -n 1
commande d'impression de la première ligne d'un fichier (de la tête).tail -n +2
imprime la queue d'un fichier à partir de la ligne 2 (+2
)[ ... ]
est utilisée pour supprimer le fichier de sortie à partir de la liste d'entrée.cat a.csv b.csv > X.csv
peut être utilisé simplement pour ajouter un.csv et b csv en un fichier unique (mais vous copier 2 fois l'en-tête).La
paste
commande colle les fichiers un à côté de l'autre. Si un fichier a des espaces blancs comme des lignes vous pouvez obtenir le résultat que vous avez indiqué ci-dessus.L'utilisation de
-d ,
demande àpaste command
pour définir les champs séparés par une virgule,
, mais ce n'est pas le cas pour le format des fichiers que vous avez indiqué ci-dessus.La
cat
de commande au lieu de concaténer les fichiers et les imprime sur la sortie standard, ce qui signifie qu'il écrit un fichier après l'autre.Reportez-vous à
man head
ouman tail
pour la syntaxe des options uniques (une version permethead -1
les autres, au lieuhead -n 1
)...Merci beaucoup @wahwahwah.
J'ai utilisé ton script pour faire nautilus-action, mais il fonctionne correctement qu'avec ce changement: