Replace specific text in csv via commandline

前端 未结 3 1591
孤街浪徒
孤街浪徒 2021-01-16 04:38

I have data in csv format that gets output from SQL Server. The data has some NULL and N.A. values written out which makes a column ch

相关标签:
3条回答
  • 2021-01-16 05:15
    @echo off
        setlocal enableextensions enabledelayedexpansion
    
        (for /f "tokens=*" %%f in (a.csv) do if not "%%f"=="" (
                set "line=%%f"
                set "line=!line:NULL=-1!"
                set "line=!line:N.A.=-2!"
                echo(!line!
        )) > b.csv
    
        endlocal
    

    This will work if, as stated by OP, the file is in the format indicated, containing only integers, NULL and N.A., or at least it does not include special characters.

    0 讨论(0)
  • 2021-01-16 05:33

    This uses a helper batch file called repl.bat from - https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

    Place repl.bat in the same folder as the batch file or in a folder that is on the path.

    It should be more robust and faster.

    type file.csv |repl "NULL" "-1" |repl "N\.A\." "-2" >newfile.csv
    
    0 讨论(0)
  • 2021-01-16 05:34

    Try this out:

    @echo off
    setLocal enableDelayedExpansion
    
    set filename=input.txt
    set originalText1=NULL
    set "replacedText1=-1"
    set "originalText2=N.A."
    set "replacedText2=-2"
    
    for /f "tokens=*" %%a in ('type %filename%') do (
        set "line=%%a"
        if defined line (
            call set "line=%%line:%originalText1%=%replacedText1%%%"
            call set "line=%%line:%originalText2%=%replacedText2%%%"
            echo !line!>> output.txt
        ) else (
            echo.
        )
    )
    

    This code will help you to replace all the instance of NULL to -1 and N.A. to -2. The result will then be stored in output.txt. Hope it helps.

    P.S. Note that call set is needed as it will expand the variable that is passed on the same line.

    0 讨论(0)
提交回复
热议问题