小编典典

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

all

我有一些文件,如果它是文件中的最后一个字符,我想删除最后一个换行符。 od -c向我展示了我运行的命令确实使用尾随的新行写入文件:

0013600   n   t  >  \n

我用 sed 尝试了一些技巧,但我能想到的最好的方法是没有做到这一点:

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

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


阅读 101

收藏
2022-08-07

共1个答案

小编典典

perl -pe 'chomp if eof' filename >filename2

或者,要就地编辑文件:

perl -pi -e 'chomp if eof' filename

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

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

但是,在测试中,它起作用了。

2022-08-07