25

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

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

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
4

4 回答 4

71

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

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

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

于 2012-01-05T08:17:48.000 回答
12

只需使用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
于 2015-11-23T22:47:18.387 回答
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
于 2012-01-05T08:15:45.473 回答
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)"
于 2019-03-01T19:38:43.907 回答