如何使用BATCH文件中的repl.bat将换行替换为空

时间:2014-11-18 17:48:09

标签: regex windows batch-file cmd

我尝试使用REPL.BAT删除文件中找到的换行符。

现在我有了这段代码

Type "C:\user\AllFiles\%%a.in.tmp"  | C:\user\bat\repl.bat "%%s" "%%t" X > "C:\user\AllFiles\%%a.out.tmp"




%%s - Can be found in the first column of replace.txt
%%t - Can be found in the second column of replace.txt

请注意,以下示例将模式启动与AAA +任意3个字符匹配,并替换为XXXYYY

AAA\d{3}     XXXYYY

现在我将如何实现用\ n替换\ R?

2 个答案:

答案 0 :(得分:1)

<强> LINEBREAKS

filter fix {lf|cr}

修复了行结尾的问题。

换行符处的行被破坏。如果前面有回车符,则两者都被删除。但是,没有换行的单个回车不会破坏该行。

cr - removes all stray CR and LF left on each line.

lf - add a LF to any CR embeded in the middle of the line.

然后在末尾写入带有CRLF的行(writeline方法添加它)。

示例 修复win.ini,而不是需要修复,并将其发送到屏幕

filter fix cr <"%systemroot%\win.ini"

您必须修改脚本,因为它需要命令行参数。

Set Arg = WScript.Arguments
set WshShell = createObject("Wscript.Shell")
Set Inp = WScript.Stdin
Set Outp = Wscript.Stdout

    If Arg(1) = "cr" then 
        Do Until Inp.AtEndOfStream
            Line=Inp.readline
            Line=Replace(Line, vbcr, "")
            Line=Replace(Line, vblf, "")
            outp.writeline Line
        Loop
    End If
    If Arg(1) = "lf" then 
        Do Until Inp.AtEndOfStream
            Line=Inp.readline
            Line=Replace(Line, vbcr, vbcrlf)
            outp.writeline Line
        Loop
    End If

要使用,您需要使用cscript运行。

cscript //nologo c:\scriptname.vbs fix cr <inputfile.txt >outputfile.txt

我相信你可以修改它。正则表达式对此非常有用。

答案 1 :(得分:0)

您没有提供足够的信息供任何人提供完整的答案。

一般情况下,如果您想操纵M(换行),则必须使用\n(多行)选项。

以下内容将从文件中删除所有\r\n和/或\n。根据需要进行调整。

type file.txt|repl "\r?\n" "" m >out.txt