Como posso mesclar os arquivos linha por linha na linha de comando do Windows?

1

No dos, existe uma maneira de mesclar um conjunto de arquivos para que, por exemplo,

1.txt

um
b
c

e

2.txt

1
2
3

torna-se

merged.txt

a 1
b 2
c 3

Assim como o comando paste nos sistemas * nix

    
por Paul 01.07.2010 / 15:09

3 respostas

1

Não, você precisará mesclar as linhas com um programa ou uma linguagem de script, como o Python.

Atualização: Veja essas portas do Win de utilitários GNU , incluindo colar (.exe)

    
por 01.07.2010 / 15:29
1

Se os dados forem razoavelmente simples, você poderá fazê-lo com o Excel. Ou você pode baixar o OpenOffice e fazê-lo no Calc, mas o método no Calc é uma dor. (Você precisa colar os dados em duas colunas e mesclá-los com a função "Concatenate", na forma de fórmula (por exemplo, concatenar (Row1; row2;))

    
por 01.07.2010 / 16:06
1

Definitivamente, concordo que uma porta de ferramentas Unix ou uma linguagem de script é o caminho a percorrer (embora VBScript ou Powershell sejam escolhas mais convenientes do que Python para usuários do Windows), mas mesclando dois arquivos IS possíveis no DOS: -

@ECHO OFF

REM .bat to merge 1.txt and 2.txt

GOTO :Main

:StartMerge
    SET /P _a=<%1
    SET /P _b=<%2

    ECHO %_a% %_b%

    DEL %1 %2

    GOTO :EndMerge

:CleanUp
    SET _LinesIn1=
    SET _LinesIn2=

    SET _a=
    SET _b=

    GOTO :EOF

:Main
    SET _LinesIn1=0
    SET _LinesIn2=0

    FOR /F "delims=: tokens=1,*" %%i IN ('findstr /n "^" 1.txt') DO (
        ECHO.%%j>_c1n%%i
        SET /A _LinesIn1+=1
    )

    FOR /F "delims=: tokens=1,*" %%i IN ('findstr /n "^" 2.txt') DO (
        ECHO.%%j>_c2n%%i
        SET /A _LinesIn2+=1
    )

    IF %_LinesIn1% NEQ %_LinesIn2% (
        ECHO Cannot merge files; mismatched line count:-
        ECHO   1.txt - %_LinesIn1% lines
        ECHO   2.txt - %_LinesIn2% lines

        DEL _c*

        GOTO :CleanUp
    )

    FOR /L %%n IN (1, 1, %_LinesIn1%) DO (
        CALL :StartMerge _c1n%%n _c2n%%n

        :EndMerge
        REM No-op to avoid ") was unexpected at this time." error
    )

    GOTO :CleanUp

Arquivo em "Só porque você pode, não significa que você deveria." : -)

    
por 02.07.2010 / 07:44