我正在尝试使用Windows批处理程序从文本文件中删除所有空行。
我知道实现这一目标的最简单方法是通过正则表达式和sed命令实现 sh :
sed -i "/^$/d" test.txt
问题:Windows批处理是否有类似的简单方法来删除文本文件中的所有行?否则,实现此目的的最简单的方法是什么?
注意:我正在运行此批处理脚本来设置新的Windows计算机供客户使用,因此最好不需要安装(然后取消安装)其他程序来实现此目的 - 理想情况下,我将使用“标准”批处理库。
答案 0 :(得分:5)
对于/ f不处理空行:
for /f "usebackq tokens=* delims=" %%a in ("test.txt") do (echo(%%a)>>~.txt
move /y ~.txt "test.txt"
答案 1 :(得分:1)
您还可以使用FINDSTR:
findstr /v "^$" C:\text_with_blank_lines.txt > C:\text_without_blank_lines.txt
/ V-仅打印不包含匹配项的行。
^ ---行位置:行首
$ ---行位置:行尾
我通常通过管道将命令输出发送给它:
dir | findstr /v "^$"
由于一些“空白行”可能包含空格或制表符,您可能还会发现类似问题的这些答案很有帮助。
https://stackoverflow.com/a/45021815/5651418
https://stackoverflow.com/a/16062125/5651418