我只想在文件末尾添加一个新行,如果它不存在的话.这是为了防止在文件末尾出现多个换行符.

我希望用sed.

sed -i -e '/^$/d;$G' /inputfile

echo file1
name1
name2

echo file2
name3
name4
(newline)

当我在文件上运行代码时;

echo file1
name1
name2
(newline)

echo file2
name3
name4

如果没有换行符,它会添加一个换行符,但如果存在,它会将其删除...这让我困惑.

推荐答案

因为如果新行不在,它会删除新行,所以您可以简单地使用:

echo "" >> file;  sed -ie '/^$/d;$G' file; sed -ie '/^$/d;$G' file

添加新行并删除所有内容,然后添加新行.不是优雅的方式,但肯定有效:)

Linux相关问答推荐

C++17:G++8.5版似乎无法正确生成无符号64位伪随机整数

如何在不使用LD_LIBRARY_PATH或RPATH的情况下运行链接到共享库的二进制文件?

通过ssh传输参数时避免字符串拆分

通过添加1位数字替换最后4位数字(不包括0x)

无法分析nasm中的单词

在linux中,我想将昨天的文件与今天的文件进行比较,仅将今天的更改作为输出,忽略一些字段

条件句if的正确写法是怎样的?

Linux 上 Ada 任务优先级的语义是什么?

如何查明第三方是否杀死或 destruct 了 C++ 中的程序

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

如何在守护进程中使用 popen() 和 pclose() 获取通过管道执行的 shell 命令的正确退出代码?

应用程序如何在运行时解析为不同版本的共享库?

如何优雅地退出 X11 事件循环?

什么是最有效的不区分大小写的 grep 用法?

在 Linux/POSIX 系统上获取用户全名的最简单方法是什么?

分段故障处理

有什么方法可以在linux中保留但不提交内存?

在 PHP / Apache / Linux 环境中,为什么 chmod 777 是危险的?

Android - 找不到命令

Bash:在文件中的特定位置插入一行