任何人都可以帮我找一个批处理文件脚本,自动删除TAB
个字符并用,
替换它们吗?
例如:
61 LEUKOCELL 2 7737 PK25 278 N Y
97 SNAP COMBO PLUS (FELV/FIV) 9906034 PK15 290.82 N Y
我在文本文件中有90k +行:我可以使用批处理文件自动重新格式化:
61,LEUKOCELL 2,7737,PK25,278,N,Y
97,SNAP COMBO PLUS (FELV/FIV),906034,PK15,90.82,N,Y
答案 0 :(得分:2)
您不需要复杂的方法来实现替换,就像这个一样简单。下面的小批处理文件用逗号替换所有选项卡:
@set @a=0 /*
@cscript //nologo //E:JScript "%~F0" < input.txt > output.txt
@move /Y output.txt input.txt
@goto :EOF */
WScript.Stdout.Write(WScript.StdIn.ReadAll().replace(/\t/g,","));
使用.BAT扩展名保存此代码。
答案 1 :(得分:0)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q34875733.txt"
SET "outfile=%destdir%\outfile.txt"
(
FOR /f "usebackqdelims=" %%a IN ("%filename1%") DO (
SET "line=%%a"&call :process
)
)>"%outfile%"
GOTO :EOF
:process
SET /a "col1=%line:~0,4%"
SET "col2=%line:~4,32%"
SET "col2=%col2: =%"
SET "col2=%col2: =%"
SET "col2=%col2: =%"
SET "col2=%col2: =%"
IF "%col2:~-1%"==" " SET "col2=%col2:~0,-1%"
FOR /f "tokens=1-5" %%i IN ("%line:~36%") DO ECHO %col1%,%col2%,%%i,%%j,%%k,%%l,%%m
GOTO :EOF
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
我使用了一个名为q34875733.txt
的文件,其中包含我的测试数据。
生成定义为%outfile%
的文件假设您的布局是固定列的,并且批次显示灵敏度的数据中没有字符,重复2行到90K +行的文件在我的机器上的运行时间约为7分钟。
对于每一行,将行分配给line
并按
col1
col2
替换例程
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q34875733.txt"
SET "outfile=%destdir%\outfile.txt"
SET "tab= "
(
FOR /f "usebackqtokens=1-7delims=%tab%" %%a IN ("%filename1%") DO (
REM detect missing column 3
IF "%%g" == "" (ECHO %%a,%%b,,%%c,%%d,%%e,%%f) ELSE (ECHO %%a,%%b,%%c,%%d,%%e,%%f,%%g)
)
)>"%outfile%"
GOTO :EOF
查看了您的源数据,它会使用制表符对齐列,有时会丢失第3列(413 denelan)
因此 - 替换例程(您需要将源数据61 LEUKOCELL 2重新格式化为与用于文件其余部分的格式相同的格式。
请注意,变量tab
设置中引号之间的字符是 Tab 而不是空格字符串。
所以这一次,使用tab(或标签序列)作为分隔符将行分成7列;分配给%% a .. %% g并且反刍。如果缺少第3列,则不会分配%%g
(因为有一列短),因此%%g
似乎 nothing 。如果检测到这种情况,请插入一个空字段作为第3列(因此,,
)
我假设所有数据都包含7列或6列,其中缺少第3列。
答案 2 :(得分:0)
这应该用逗号替换所有TABS。
call jrepl "\t" "," /x /f "input-file.txt" /o "output-file.txt"
这使用由dbenham编写的名为Jrepl.bat
的本机Windows批处理脚本,该脚本使用jscript
使其非常健壮且快速。
http://www.dostips.com/forum/viewtopic.php?f=3&t=6044
将其放在与批处理文件相同的文件夹中,或放在系统路径上的文件夹中。
Dropbox上也有副本(下载后取消阻止):
https://www.dropbox.com/s/4otci4d4s8x5ni4/Jrepl.bat