我有多个记事本文本文件,其中包含一个空行(每个文件的最后一行)。我想从所有文件中删除空行。我尝试了不同的grep和awk行,但是他们没有工作加上他们弄乱了文件格式;所有文本都显示在一行而不是单独的行。我也尝试使用notepad ++ regex查找ca.crt
并将其替换为空,但它也没有用。
当前文本文件如下所示:
select owner_id,members from table
group by owner_id,members
having COUNT(owner_id) > 1
输出应为
^\s*$
答案 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后者。