J'ai besoin de concaténer des fichiers texte relativement volumineux et je préférerais le faire via la ligne de commande. Malheureusement, je n'ai que Windows et je ne peux pas installer de nouveau logiciel.
type file1.txt file2.txt > out.txt
me permet presque d'obtenir ce que je veux, mais je ne veux pas que la 1ère ligne de file2.txt soit incluse dans out.txt.
J'ai remarqué que cela more
a la +n
possibilité de spécifier une ligne de départ, mais je n'ai pas réussi à les combiner pour obtenir le résultat souhaité. Je suis conscient que cela peut ne pas être possible sous Windows, et je peux toujours éditer out.txt à la main pour me débarrasser de la ligne, mais y a-t-il un moyen simple de le faire à partir de la ligne de commande?
copy
commande est beaucoup plus rapide, mais elle met un caractère SUB à la fin. Y a-t-il un moyen d'éviter cela?copy /b *.txt combined.txt
sans avoir à répertorier les fichiers individuellement.type file1.txt temp > out.txt
réellement ajouter le deuxième fichier, sans en-tête au premierJ'utilise ça, et ça marche bien pour moi:
TYPE \\Server\Share\Folder\*.csv >> C:\Folder\ConcatenatedFile.csv
Bien sûr, avant chaque course, vous devez
DELETE C:\Folder\ConcatenatedFile.csv
Le seul problème est que si tous les fichiers ont des en-têtes, ils seront répétés dans tous les fichiers.
la source
Je n'ai pas assez de points de réputation pour commenter la recommandation à utiliser
*.csv >> ConcatenatedFile.csv
, mais je peux ajouter un avertissement:Si vous créez un
ConcatenatedFile.csv
fichier dans le même répertoire que celui que vous utilisez pour la concaténation, il sera ajouté à lui-même.la source
Utilisez la commande FOR pour faire écho à un fichier ligne par ligne, et avec l'option 'skip' pour manquer un certain nombre de lignes de départ ...
Vous pouvez rediriger la sortie d'un fichier batch, contenant quelque chose comme ...
Notez le double% lorsqu'une variable FOR est utilisée dans un fichier batch.
la source
Voici comment procéder:
la source
Je mettrais cela dans un commentaire à ghostdog74, sauf que mon représentant est trop faible, alors voilà.
more +2 file2.txt > temp
Ce code ignorera en fait les lignes 1 et 2 du fichier. OP veut conserver toutes les lignes du premier fichier (pour conserver la ligne d'en-tête), puis exclure la première ligne (vraisemblablement la même ligne d'en-tête) sur le deuxième fichier, afin d'exclure uniquement la ligne d'en-tête OP doit utiliser
more +1
.type temp file1.txt > out.txt
On ne sait pas quel ordre résulte de ce code. Est
temp
ajouté àfile1.txt
(comme souhaité), ou estfile1.txt
ajouté àtemp
(indésirable car la ligne d'en-tête serait enterrée au milieu du fichier résultant).De plus, ces opérations prennent VRAIMENT LONGTEMPS avec des fichiers volumineux (par exemple 300 Mo)
la source
Je sais que vous avez dit que vous ne pouviez installer aucun logiciel, mais je ne sais pas à quel point cette restriction est stricte. Quoi qu'il en soit, j'ai eu le même problème (essayer de concaténer deux fichiers avec vraisemblablement les mêmes en-têtes) et j'ai pensé que je fournirais une réponse alternative pour les autres qui arrivent sur cette page, car cela fonctionnait très bien pour moi.
Après avoir essayé tout un tas de commandes dans Windows et été gravement frustré, et également essayé toutes sortes d'éditeurs graphiques qui promettaient de pouvoir ouvrir de gros fichiers, mais que je ne pouvais pas, je suis finalement revenu à mes racines Linux et j'ai ouvert mon Cygwin rapide. Deux commandes:
Pour
file1.csv
800 Mo etfile2.csv
400 Mo , ces deux commandes ont pris moins de 5 secondes sur ma machine. Dans une invite Cygwin, rien de moins. Je pensais que les commandes Linux étaient censées être lentes dans Cygwin mais cette approche demandait beaucoup moins d'efforts et était bien plus facile que n'importe quelle approche Windows que je pouvais trouver.la source
Dans PowerShell:
la source
Vous pouvez aussi simplement essayer ceci
Il ajoutera le contenu de file2.txt à la fin de file1.txt
Si vous avez besoin du fichier original 1.txt, effectuez une sauvegarde au préalable. Ou tu peux faire ça
Si vous souhaitez avoir un saut de ligne à la fin du premier fichier, vous pouvez essayer la commande suivante avant d'ajouter.
la source
L'aide de
copy
explique que les caractères génériques peuvent être utilisés pour concaténer plusieurs fichiers en un seul.Par exemple, pour copier tous les fichiers .txt du dossier actuel commençant par "abc" dans un seul fichier nommé xyz.txt:
la source
la source
Cela prend
Test.txt
avec les en-têtes et ajouteTest1.txt
etTest2.txt
écrit les résultats dans leTestresult.txt
fichier après avoir enlevé les en-têtes des deuxième et troisième fichiers respectivement:la source