Saltar al contenido

¿Cómo dividir un archivo de texto grande en Windows?

Deseamos regalarte la mejor respuesta que hallamos en todo internet. Nosotros deseamos que te resulte útil y si puedes comentarnos alguna mejora hazlo con total libertad.

Solución:

Si ha instalado Git para Windows, debe tener instalado Git Bash, ya que viene con Git.

Utilizar el split comando en Git Bash para dividir un archivo:

  • en archivos de 500 MB cada uno: split myLargeFile.txt -b 500m

  • en archivos con 10000 líneas cada uno: split myLargeFile.txt -l 10000

Consejos:

  • Si no tiene Git/Git Bash, descárguelo en https://git-scm.com/download

  • Si perdiste el acceso directo a Git Bash, puedes ejecutarlo usando C:Program FilesGitgit-bash.exe

¡Eso es todo!


Aunque siempre me gustan los ejemplos…

Ejemplo:

ingrese la descripción de la imagen aquí

Puede ver en esta imagen que los archivos generados por split son llamados xaa, xab, xacetc.

Estos nombres están formados por prefix y un sufijo, que puede especificar. Como no especifiqué lo que quiero, el prefix o sufijo para parecerse, el prefix predeterminado a xy el sufijo predeterminado es una enumeración alfabética de dos caracteres.

Otro ejemplo:

Este ejemplo demuestra

  • usando un nombre de archivo prefix de MySlice (en lugar del predeterminado x),
  • la -d bandera para usar sufijos numéricos (en lugar de aa, ab, acetc…),
  • y la opción -a 5 para decirle quiero que los sufijos sean de 5 dígitos:

ingrese la descripción de la imagen aquí

Set Arg = WScript.Arguments
set WshShell = createObject("Wscript.Shell")
Set Inp = WScript.Stdin
Set Outp = Wscript.Stdout
    Set rs = CreateObject("ADODB.Recordset")
    With rs
        .Fields.Append "LineNumber", 4 

        .Fields.Append "Txt", 201, 5000 
        .Open
        LineCount = 0
        Do Until Inp.AtEndOfStream
            LineCount = LineCount + 1
            .AddNew
            .Fields("LineNumber").value = LineCount
            .Fields("Txt").value = Inp.readline
            .UpDate
        Loop

        .Sort = "LineNumber ASC"

        If LCase(Arg(1)) = "t" then
            If LCase(Arg(2)) = "i" then
                .filter = "LineNumber < " & LCase(Arg(3)) + 1
            ElseIf LCase(Arg(2)) = "x" then
                .filter = "LineNumber > " & LCase(Arg(3))
            End If
        ElseIf LCase(Arg(1)) = "b" then
            If LCase(Arg(2)) = "i" then
                .filter = "LineNumber > " & LineCount - LCase(Arg(3))
            ElseIf LCase(Arg(2)) = "x" then
                .filter = "LineNumber < " & LineCount - LCase(Arg(3)) + 1
            End If
        End If

        Do While not .EOF
            Outp.writeline .Fields("Txt").Value

            .MoveNext
        Loop
    End With

Cortar

filter cut b i NumOfLines

Corta el número de líneas desde la parte superior o inferior del archivo.

t - top of the file
b - bottom of the file
i - include n lines
x - exclude n lines

Ejemplo

cscript /nologo filter.vbs cut t i 5 < "%systemroot%win.ini"

Otra forma Esto genera líneas 5001+, adapte para su uso. Esto casi no usa memoria.

Do Until Inp.AtEndOfStream
         Count = Count + 1
         If count > 5000 then
            OutP.WriteLine Inp.Readline
         End If
Loop

Si para ti ha sido útil este post, agradeceríamos que lo compartas con más desarrolladores y nos ayudes a extender este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *