如何通过批处理文件将固定字符串替换为文本文件中的NULL

时间:2013-12-13 03:59:29

标签: batch-file batch-processing

我有文本文件,我想用“”(NULL)替换NULL字符串。作为test.txt的文本文件的内容是:

abc,1234,qwe,NULL
234,NULL,wer,jkl
jkl,678,987,NULL

我期待test.txt中的输出如下:

abc,1234,qwe,
234,,wer,jkl
jkl,678,987,

我是新手,请提前帮助我谢谢

2 个答案:

答案 0 :(得分:0)

在Unix / Linux中:

cat <original file> | sed 's/NULL//' > <new file>

答案 1 :(得分:0)

尝试使用此代码:

@echo off
REM -- Prepare the Command Processor --
SETLOCAL ENABLEEXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION

::BatchSubstitude - parses a File line by line and replaces a substring"
::syntax: BatchSubstitude.bat OldStr NewStr File
::          OldStr [in] - string to be replaced
::          NewStr [in] - string to replace with
::          File   [in] - file to be parsed
:$changed 20100115
:$source http://www.dostips.com
if "%~1"=="" findstr "^::" "%~f0"&GOTO:EOF
for /f "tokens=1,* delims=]" %%A in ('"type %3|find /n /v """') do (
    set "line=%%B"
    if defined line (
        call set "line=echo.%%line:%~1=%~2%%"
        for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X
    ) ELSE echo.
)

上述代码取自here。如果要保存输出,请保存此批处理文件并运行以下命令。

C:\> <name of the above batch file> "NULL" "" originalFile.txt > test.txt

希望它有所帮助。

<小时/> 的更新

以下是执行全局搜索和替换功能的另一种方法。

@echo off
setLocal enableDelayedExpansion
set filename=input.txt
set originalText=NULL
set "replacedText="

for /f "tokens=*" %%a in ('type %filename%') do (
    set "line=%%a"
    if defined line (
        call set "line=%%line:%originalText%=%replacedText%%%"
        echo !line!>> test.txt
    ) else (
        echo.
    )
)

call set "line=%%line:%originalText%=%replacedText%%%"将负责执行搜索和替换文本文件中的NULL字词。然后程序会将结果存储到test.txt

P.S。请注意,需要call set,因为它将扩展在同一行传递的变量。