echo没有新行的文件

时间:2014-04-09 10:43:40

标签: linux bash

我有一个从程序生成的配置文件,我想在文件的最后一行末尾添加一些文本。

示例文件:

ABC123
DFG

我想要的是什么:

ABC123
DFG test

当我尝试使用-n-eprintf进行回音时,我无法实现这一点,它始终会在新行上打印。

2 个答案:

答案 0 :(得分:2)

实际上,你总是追加到最后一行!

真正的问题是认为是最后一行的实际上并非如此。如果你在有换行符的地方放置\n,那就很明显了:

ABC123\n
DFG\n
                 <-- THIS is the last line

单独使用echo,您无法追加到您想要的位置;解决方案需要读取文件(至少超出插入位置的所有内容),并再次写出插入位置以外的所有内容。

sed可以做这样的事情。

备注 关于agilob提出的解决方案:

echo "$(cat file.txt)test" > file.txt 

这不是就地插入;实际上它会读取整个文件,将命令行上的全部内容传递给echo工具,然后才会完全覆盖您的file.txt。对于大型文件,这可能会产生严重问题,具体取决于您的shell。

这与sed解决方案不同,后者会在流式传输时对其进行编辑(“实时”),因此对于大型文件也是如此,w.r.t也是如此。性能

答案 1 :(得分:0)

尝试使用sed:

sed '$s/$/ test/' file

- 编辑:因为这个帖子被标记为重复,我觉得答案不完全正确,我在那里添加了一些评论......