我有一个从程序生成的配置文件,我想在文件的最后一行末尾添加一些文本。
示例文件:
ABC123
DFG
我想要的是什么:
ABC123
DFG test
当我尝试使用-n
和-e
或printf
进行回音时,我无法实现这一点,它始终会在新行上打印。
答案 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
- 编辑:因为这个帖子被标记为重复,我觉得答案不完全正确,我在那里添加了一些评论......