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