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

问题描述 投票:0回答:2

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

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

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

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

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

regex windows batch-file sed
2个回答
8
投票

对于 /f 不处理空行:

for /f "usebackq tokens=* delims=" %%a in ("test.txt") do (echo(%%a)>>~.txt
move /y  ~.txt "test.txt"

8
投票

您也可以使用 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

© www.soinside.com 2019 - 2024. All rights reserved.