Windows批处理:如何删除所有空行(或空)行

时间:2016-01-21 11:26:05

标签: regex windows batch-file sed

我正在尝试使用Windows批处理程序从文本文件中删除所有空行。

我知道实现这一目标的最简单方法是通过正则表达式和sed命令实现 sh

sed -i "/^$/d" test.txt

问题:Windows批处理是否有类似的简单方法来删除文本文件中的所有行?否则,实现此目的的最简单的方法是什么?

注意:我正在运行此批处理脚本来设置新的Windows计算机供客户使用,因此最好不需要安装(然后取消安装)其他程序来实现此目的 - 理想情况下,我将使用“标准”批处理库。

2 个答案:

答案 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