【问题标题】:Remove lines from a file starting with a space, including empty lines从文件中删除以空格开头的行,包括空行
【发布时间】:2013-04-10 04:53:02
【问题描述】:

要删除以空格开头的txt文件的所有行(包括空行),我写

    findstr /v /b /c:" " <%1>result.out.

确实,如果每行开头和空行都不再有空格,result.out 文件会为我解答。

我所做的仍然将行标题留空,它还保留了我想放弃的空白行。最后,result.out 输出必须有连续的行,每行的开头总是包含一个文本。

请有人能告诉我它有什么问题以及如何解决这个问题? 谢谢。

【问题讨论】:

  • 它的工作有什么不妥之处?
  • 我所做的仍然将行标题留空,它还保留了我想放弃的空白行。最后,result.out 输出必须有连续的行,每行的开头总是包含一个文本。

标签: batch-file space lines


【解决方案1】:

如果您想将 Tab 字符作为要检查的空格的一部分,您必须使用批处理脚本。如果您尝试 Tab 或将 Tab 字符粘贴到控制台,cmd 控制台只会向您发出恼人的声音。但是cmd 解释.bat 文件中的Tab 没问题。

将其放入批处理文件并运行它,将 SpaceTab 替换为实际的空格和制表符。

findstr /r /v /c:"^[空格制表符]" /c:"^$" "%~1" &gt;result.out

第一个/c: 检查行首的空格。第二个/c: 检查空行。使用/v 开关省略两者。

【讨论】:

  • 你很好!如此完美,非常感谢大家。我是批新手,但是通过“Stackoverflow”论坛,我真的了解了很多东西;)谢谢!
  • @new - 非常好。我很高兴它对你有用。如果您认为合适,请考虑marking my answer as accepted
【解决方案2】:
@ECHO OFF
SETLOCAL
CALL CMD /c EXIT 26
(
FOR /f "eol=%=ExitCodeAscii% delims=" %%i IN ('findstr /v /b /c:" " ^<%1') DO ECHO %%i
)>result.out

应该删除空行。

FOR 读取在 FINDSTR 删除所有带有尾随空格的行之后出现的文件的每一行。任何空的谎言都将被丢弃,整行都应用于 %%i,因为没有分隔符。

通过将行尾字符设置为 control-Z,实际上也没有行尾,因此所有非空行都是ECHOed

【讨论】:

    猜你喜欢
    • 2011-08-30
    • 2017-05-23
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多