如何使用批处理文件连接2行

时间:2012-07-01 18:44:04

标签: batch-file

我有一个文本文件,其行数未知,有些行以模式开头,我想加入以下一行的模式开头的行,例如

name=jimmy
age=19 id=23423 site=www.xxx.com
bla bla
name=katy
age=15 id=234543 site=www.yyy.com
name=ross
age=29 id=54564 site=www.ZZZZ.com

输出应为

name=jimmy age=19 id=23423 site=www.xxx.com
 bla bla bla
name=katy age=15 id=234543 site=www.yyy.com
name=ross age=29 id=54564 site=www.ZZZZ.com

所以模式是'name',它应该加入下一行 我想使用sed,但我不知道如何 请帮忙

2 个答案:

答案 0 :(得分:1)

嗯,这是一个简单的脚本:

@echo off
setlocal enabledelayedexpansion
set "INPUT_FILE=input.txt"
set "OUTPUT_FILE=output.txt"
set prev=
for /f "tokens=*" %%f in (%INPUT_FILE%) do (
    for /f "tokens=1,2 delims==" %%g in ("%%f") do (
        if "!prev!" neq "" (
            echo !prev! %%f >>%OUTPUT_FILE%
            set prev=
        ) else (
            if "%%g" equ "name" (
                set prev=%%f
            ) else (
                echo %%f >>%OUTPUT_FILE%
                set prev=
            )
        )
    )
)

答案 1 :(得分:1)

@echo off
setlocal EnableDelayedExpansion
set pattern=name
set patternLen=4
call :ProcessFile < input.txt > output.txt
goto :EOF

:ProcessFile
set line=
set /P line=
if not defined line exit /B
if "!line:~0,%patternLen%!" equ "%pattern%" (
   set /P nextLine=
   set "line=!line! !nextLine!"
)
echo !line!
goto ProcessFile

以前的批处理文件存在问题,即它在输入文件的第一个空行结束。但是,如果需要,可以修复此问题。