我有一个包含如下记录的文件:
Aaron,Daniel,,,AARDA,MEDICAL,10,HEH
我需要一个批处理文件,该文件可以查找正确的逗号并插入引号,并在文件末尾添加逗号。
我有这个批处理文件,可以成功将引号添加到每行的开头:
@echo
setLocal EnableDelayedExpansion
for /f "tokens=* delims= " %%a in (input.txt) do (
set /a N+=1
echo ^"%%a >>output.txt
)
我需要的是输出看起来像这样:
"Aaron,Daniel,,",AARDA,MEDICAL,10,HEH,
答案 0 :(得分:2)
从您对问题的评论中了解到,连续3个逗号在每行中仅出现一次。为此,解决方案非常简单:
@echo off
setlocal DisableDelayedExpansion
(
for /F "usebackq tokens=*" %%A in ("input.txt") do (
set "Line=%%A"
setlocal EnableDelayedExpansion
echo "!Line:,,,=,,",!,
endlocal
)
)>"output.txt"
它最初从延迟扩展开始,并在循环的每次迭代中启用延迟扩展,以防止破坏包含!
字符的行。
由于,,,
在每一行中只出现一次(据我所知),因此可以安全地用,,",
代替
tokens=*
仅在您想从每一行中删除可能的前导空格时才需要,否则,您可以使用“ delims =”将整个行读入单个标记中。
答案 1 :(得分:1)
如果感兴趣的是替代方法。
带有示例文件test.txt:
Aaron,Daniel,,,AARDA,MEDICAL,10,HEH
Bob,Edward,,,AARDA,MEDICAL,10,HEH
使用sed,将第四个逗号替换为",
,并在开头("
)和末尾(^
的{{1}}处添加,
:
$
返回:
sed 's/,/",/4' test.txt | sed 's/^/"/' | sed 's/$/,/'