我想仅从unix中的文件末尾删除换行符\n
例如
abc
def
ghi
输出应该是
abc
def
ghi
在文件末尾不应该只有一个\n
答案 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任意尾随空白字符,而不仅仅是换行符。这几乎可以肯定你想要的。)