Bash:将string添加到文件的末尾而不换行

如何在没有换行符的情况下将string添加到文件末尾?

例如,如果我使用>>它将添加到换行符的文件的末尾:

cat list.txt yourText1 root@host-37:/# echo yourText2 >> list.txt root@host-37:/# cat list.txt yourText1 yourText2 

我想在yourText1之后添加yourText2

 root@host-37:/# cat list.txt yourText1yourText2 

Solutions Collecting From Web of "Bash:将string添加到文件的末尾而不换行"

 sed '$s/$/yourText2/' list.txt > _list.txt_ && mv -- _list.txt_ list.txt 

如果你的sed实现支持-i选项,你可以使用:

 sed -i.bck '$s/$/yourText2/' list.txt 

有了第二个解决方案,你也会有一个备份(首先你需要手动完成)。

或者:

 ex -sc 's/$/yourText2/|w|q' list.txt 

要么

 perl -i.bck -pe's/$/yourText2/ if eof' list.txt 

你可以使用echo的-n参数。 喜欢这个:

 $ touch a.txt $ echo -n "A" >> a.txt $ echo -n "B" >> a.txt $ echo -n "C" >> a.txt $ cat a.txt ABC 

编辑:啊哈,你已经有一个文件包含字符串和换行符。 好吧,无论如何我都会把这个放在这里,可能对某个人有用。

只需使用printf ,因为它不会将新行作为默认值打印:

 printf "final line" >> file 

测试

让我们创建一个文件,然后添加一个额外的行,没有一个尾随的新行。 注意我使用cat -vet来查看新行。

 $ seq 2 > file $ cat -vet file 1$ 2$ $ printf "the end" >> file $ cat -vet file 1$ 2$ the end