sri*_*amn 1 csv command-line replace batch-file findstr
我有csv格式的数据从中获取输出SQL Server
.数据有一些NULL
和N.A.
值写出来,这使得列字符类型 - 否则它将只包含整数.是否可以通过批处理文件语句查找并用数字替换这些值 - 例如,-1表示NULL
和-2表示N.A.
.以下是数据的现状:
Col A, Col B, Col C, Col D, Col E, Col F, Col G, Col H
NULL, 13, 11, N.A., 4710, N.A., 1, 1
5, NULL, 13, 7070, N.A., 4920, N.A., 1
5, NULL, 12, 8680, N.A., 9130, N.A., 1
Run Code Online (Sandbox Code Playgroud)
我想把它转换成这个:
Col A, Col B, Col C, Col D, Col E, Col F, Col G, Col H
-1, 13, 11, -2, 4710, -2, 1, 1
5, -1, 13, 7070, -2, 4920, -2, 1
5, -1, 12, 8680, -2, 9130, -2, 1
Run Code Online (Sandbox Code Playgroud)
通过批处理语句执行此操作非常重要,因为这是一个中间输出,并立即被另一个程序读入.我看了一下这个findstr
命令(http://technet.microsoft.com/en-us/library/bb490907.aspx),但我很清楚如何编写确切的语法并执行替换操作.有用的输入非常感谢!
@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
Run Code Online (Sandbox Code Playgroud)
如果如OP所述,文件是指示的格式,仅包含整数,NULL和NA,或者至少它不包含特殊字符,则这将起作用.
这使用了一个名为的辅助批处理文件repl.bat
- https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat
将repl.bat
在同一文件夹中的批处理文件或者是道路上的一个文件夹中.
它应该更强大,更快.
type file.csv |repl "NULL" "-1" |repl "N\.A\." "-2" >newfile.csv
Run Code Online (Sandbox Code Playgroud)