Necesito concatenar algunos archivos de texto relativamente grandes, y preferiría hacerlo a través de la línea de comando. Lamentablemente, solo tengo Windows y no puedo instalar un nuevo software.
type file1.txt file2.txt > out.txt
me permite casi obtener lo que quiero, pero no quiero que la primera línea de file2.txt se incluya en out.txt.
He notado que more
tiene la +n
opción de especificar una línea de partida, pero no he logrado combinarlas para obtener el resultado que quiero. Soy consciente de que esto puede no ser posible en Windows, y siempre puedo editar out.txt a mano para deshacerme de la línea, pero ¿hay alguna manera simple de hacerlo desde la línea de comandos?
copy
comando es mucho más rápido, pero pone un carácter SUB al final. Hay alguna manera de evitar esto?copy /b *.txt combined.txt
sin tener que enumerarlos individualmente.type file1.txt temp > out.txt
para agregar el segundo archivo, sin un encabezado al primeroYo uso esto, y funciona bien para mí:
TYPE \\Server\Share\Folder\*.csv >> C:\Folder\ConcatenatedFile.csv
Por supuesto, antes de cada carrera, tienes que
DELETE C:\Folder\ConcatenatedFile.csv
El único problema es que si todos los archivos tienen encabezados, se repetirá en todos los archivos.
fuente
No tengo suficientes puntos de reputación para comentar sobre la recomendación que
*.csv >> ConcatenatedFile.csv
debo usar , pero puedo agregar una advertencia:Si crea un
ConcatenatedFile.csv
archivo en el mismo directorio que está utilizando para la concatenación, se agregará a sí mismo.fuente
Use el comando FOR para hacer eco de un archivo línea por línea, y con la opción 'omitir' para omitir varias líneas de inicio ...
Puede redirigir la salida de un archivo por lotes, que contiene algo como ...
Tenga en cuenta el doble% cuando se utiliza una variable FOR dentro de un archivo por lotes.
fuente
Aquí se explica cómo hacer esto:
fuente
Pondría esto en un comentario a ghostdog74, excepto que mi representante es demasiado bajo, así que aquí va.
more +2 file2.txt > temp
Este código realmente ignorará las filas 1 y 2 del archivo. OP desea mantener todas las filas del primer archivo (para mantener la fila de encabezado) y luego excluir la primera fila (presumiblemente la misma fila de encabezado) en el segundo archivo, por lo que para excluir solo la fila de encabezado que OP debe usar
more +1
.type temp file1.txt > out.txt
No está claro qué orden resulta de este código. Se
temp
agrega afile1.txt
(como se desee), o sefile1.txt
agrega atemp
(no deseado ya que la fila del encabezado estaría enterrada en el medio del archivo resultante).Además, estas operaciones tardan MUCHO TIEMPO con archivos grandes (por ejemplo, 300 MB)
fuente
Sé que dijiste que no podías instalar ningún software, pero no estoy seguro de cuán estricta es esa restricción. De todos modos, tuve el mismo problema (tratando de concatenar dos archivos con presumiblemente los mismos encabezados) y pensé que proporcionaría una respuesta alternativa para otros que lleguen a esta página, ya que funcionó muy bien para mí.
Después de probar un montón de comandos en Windows y de sentirme muy frustrado, y también de probar todo tipo de editores gráficos que prometían poder abrir archivos grandes, pero luego no pudieron, finalmente volví a mis raíces de Linux y abrí mi Cygwin rápido. Dos comandos:
Para
file1.csv
800MB yfile2.csv
400MB, esos dos comandos tomaron menos de 5 segundos en mi máquina. En un aviso de Cygwin, nada menos. Pensé que se suponía que los comandos de Linux eran lentos en Cygwin, pero ese enfoque tomó mucho menos esfuerzo y fue mucho más fácil que cualquier enfoque de Windows que pude encontrar.fuente
En powershell:
fuente
También puedes simplemente probar esto
Agregará el contenido de file2.txt al final de file1.txt
Si necesita el archivo original 1.txt, haga una copia de seguridad de antemano. O puedes hacer esto
Si desea tener un salto de línea al final del primer archivo, puede probar el siguiente comando antes de agregarlo.
fuente
La ayuda
copy
explica que los comodines se pueden usar para concatenar múltiples archivos en uno.Por ejemplo, para copiar todos los archivos .txt en la carpeta actual que comienzan con "abc" en un solo archivo llamado xyz.txt:
fuente
fuente
Esto toma
Test.txt
con encabezados y agregaTest1.txt
yTest2.txt
escribe resultados en elTestresult.txt
archivo después de quitar los encabezados del segundo y tercer archivo respectivamente:fuente