Bash:在没有换行的情况下将字符串添加到文件末尾

时间:2012-01-05 08:10:38

标签: linux bash awk echo cat

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

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

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

3 个答案:

答案 0 :(得分:52)

您可以使用echo的-n参数。像这样:

$ touch a.txt
$ echo -n "A" >> a.txt
$ echo -n "B" >> a.txt
$ echo -n "C" >> a.txt
$ cat a.txt
ABC
编辑:啊哈,你已经有了一个包含字符串和换行符的文件。好吧,无论如何我会留在这里,我们可能对某人有用。

答案 1 :(得分:6)

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

答案 2 :(得分:0)

以上答案对我不起作用。发布Python实现,以防有人觉得有用。

python -c "txtfile = '/my/file.txt' ; f = open(txtfile, 'r') ; d = f.read().strip() ; f.close() ; d = d + 'the data to append' ; open(txtfile, 'w').write(d)"