【问题标题】:remove all empty lines from text files while keeping format从文本文件中删除所有空行,同时保持格式
【发布时间】:2018-03-11 17:24:51
【问题描述】:

我有多个记事本文本文件,其中包含一个空行(每个文件的最后一行)。我想从所有文件中删除空行。我尝试了不同的 grep 和 awk 行,但它们不起作用,而且它们弄乱了文件格式;所有文本都显示在一行而不是单独的行上。我还尝试使用 notepad++ 正则表达式来查找 ^\s*$ 并将其替换为空,但它也不起作用。

当前文本文件如下所示:

apples
oranges
peaches
[empty line]

输出应该是

apples
oranges
peaches

【问题讨论】:

  • Linux 和 notepad++ 标签?这是一个矛盾...

标签: linux awk notepad++


【解决方案1】:
  • Ctrl+H
  • 查找内容:\R^$
  • 替换为:LEAVE EMPTY
  • 检查环绕
  • 检查正则表达式
  • 全部替换

说明:

\R      : any kind of linebreak
^       : begining of line
$       : end of line

给定示例的结果:

apples
oranges
peaches

【讨论】:

    【解决方案2】:

    如果要删除文件的最后一行,请使用sed '$d'。如果您只想在最后一行为空时这样做,请使用sed '${/^$/d;}'(这会将带有一些空格的行视为非空行,因此您可能更喜欢sed '${/^ *$/d;}' 或其他变体。

    【讨论】:

      【解决方案3】:

      “空的最后一行”可能是一个解释问题。来自the wikipedia "Newline" article:

      两种方式来查看换行符,这两种方式都是自洽的,换行符可以是分隔行,也可以是终止行。如果换行符被视为分隔符,则文件的最后一行之后将没有换行符。如果文件没有被换行符终止,某些程序在处理文件的最后一行时会出现问题。另一方面,期望换行符用作分隔符的程序会将最后的换行符解释为开始一个新的(空)行。相反,如果换行符被视为终止符,则包括最后一行在内的所有文本行都将被换行符终止。如果文本文件中的最后一个字符序列不是换行符,则文件的最后一行可能被认为是不正确或不完整的文本行,或者文件可能被认为被不正确地截断。

      在我的小世界里,Visual Studio Code 编辑器采用前一种观点; vim 后者。

      【讨论】:

        猜你喜欢
        • 2011-10-01
        • 1970-01-01
        • 2021-12-25
        • 1970-01-01
        • 1970-01-01
        • 2013-03-16
        • 2014-06-19
        • 2012-04-14
        相关资源
        最近更新 更多