一尘不染

如果换行符是文件中的最后一个字符,该如何删除?

linux

我有一些文件要删除最后一个换行符(如果它是文件中的最后一个字符)。 od -c告诉我,我运行的命令确实以尾随新行写入文件:

0013600   n   t  >  \n

我用sed尝试了一些技巧,但我能想到的最好的方法不是:

sed -e '$s/\(.*\)\n$/\1/' abc

任何想法如何做到这一点?


阅读 490

收藏
2020-06-02

共1个答案

一尘不染

perl -pe 'chomp if eof' filename >filename2

或者,在适当位置编辑文件:

perl -pi -e 'chomp if eof' filename

[编者注:-pi -e最初是-pie,但正如一些评论者所指出并由@hvd解释,后者不起作用。]

在我看到的awk网站上,这被描述为“ perl亵渎”。

但是,在测试中,它奏效了。

2020-06-02