在保持格式的同时从文本文件中删除所有空行

时间:2017-09-29 18:34:56

标签: linux awk notepad++

我有多个记事本文本文件,其中包含一个空行(每个文件的最后一行)。我想从所有文件中删除空行。我尝试了不同的grep和awk行,但是他们没有工作加上他们弄乱了文件格式;所有文本都显示在一行而不是单独的行。我也尝试使用notepad ++ regex查找ca.crt并将其替换为空,但它也没有用。

当前文本文件如下所示:

select owner_id,members from table
    group by owner_id,members
    having COUNT(owner_id) > 1

输出应为

^\s*$

3 个答案:

答案 0 :(得分:1)

  • 控制 + ħ
  • 找到:\R^$
  • 替换为:LEAVE EMPTY
  • 检查环绕
  • 检查正则表达式
  • 全部替换

<强>解释

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

给定示例的结果:

apples
oranges
peaches

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

  

两种查看换行符的方法,都是自我一致的,换行符是分开行或者终止行。如果换行符被视为分隔符,则在文件的最后一行之后将不会有换行符。如果某个程序没有被换行符终止,则某些程序在处理文件的最后一行时会遇到问题。另一方面,期望将换行用作分隔符的程序会将最终换行符解释为启动新(空)行。相反,如果换行符被视为终止符,则包含最后一行的所有文本行都应该由换行符终止。如果文本文件中的最后一个字符序列不是换行符,则该文件的最后一行可能被视为不正确或不完整的文本行,或者该文件可能被视为被不正确地截断。

在我的小世界中,Visual Studio Code编辑器采用前一种视图; vim后者。