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

0013600   n   t  >  \n

我试过sed的一些技巧,但我能想到的最好的方法是不做这些技巧:

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

有什么办法吗?

推荐答案

perl -pe 'chomp if eof' filename >filename2

或者,要就地编辑文件:

perl -pi -e 'chomp if eof' filename

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

在我看到的awk网站上,这被描述为"perl亵渎".

但是,在一次测试中,它起了作用.

Linux相关问答推荐

BASH:在curl输出的每一行添加前缀

在 Rust 中重命名主线程

如何更改文件的上次访问/修改/更改日期?

我可以防止 gcc 优化器延迟内存分配吗?

所有进程的Linux环境变量

如何使用 __attribute__((visibility("default")))?

跨多台计算机管理用户配置文件

需要解释 Linux bash 内置 exec 命令行为

通过写入 /dev/input/mice 来控制鼠标

当命令太长时,命令行会自动覆盖

在 cron 作业(job)中执行 PHP 脚本

to_string不是std的成员?

如何显示正在运行的进程列表 Python?

将 jiffies 转换为毫秒

给定一个 linux 用户名和密码,我如何测试它是否是有效帐户?

ldconfig 错误:使用 Linux 加载程序时不是符号链接

crt1.o:在函数_start中:-Linux 中未定义对main的引用

如何将文件夹中的文件列表发送到Linux中的txt文件

Docker:您是否try 连接到没有 TLS 的启用 TLS 的守护进程?

如何安排 tcpdump 在特定时间段内运行?