从文件末尾删除换行符

时间:2011-12-26 11:19:38

标签: file unix newline

我想仅从unix中的文件末尾删除换行符\n 例如

abc  
def  
ghi
​

输出应该是

abc  
def  
ghi

在文件末尾不应该只有一个\n

2 个答案:

答案 0 :(得分:12)

你可以:

perl -pe 'chomp if eof' file1 > file2

示例:

$ cat file1
abc
def
ghi
$ perl -pe 'chomp if eof' file1 > file2
$ cat file2
abc
def
ghi$ 

答案 1 :(得分:4)

一般来说,如果在文件的最后一行末尾有换行符,则Unix文本工具会更快乐。为什么需要将其删除?

您不能使用awk执行此操作(据我所知),perl可以轻松实现:

perl -e 'undef $/; $_ = <>; s/\R\z//; print'

编辑:多年以后我发现你可能意味着&#34;如何从文件末尾删除尾随空行&#34; ;换句话说,您可能希望将两个或更多个连续换行符减少到单个换行符,仅在文件末尾。对于perl来说,这也是最简单的:

perl -e 'undef $/; $_ = <>; s/\s+\z/\n/; print'

(这将使zorch任意尾随空白字符,而不仅仅是换行符。这几乎可以肯定你想要的。)