Bash: добавить строку в конец файла без разрыва строки - PullRequest
20 голосов
/ 05 января 2012

Как добавить строку в конец файла без переноса строки?

например, если я использую >>, он добавит в конец файла с разрывом строки:

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

Я хотел бы добавить ваш текст2 сразу после вашего текста1

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

Ответы [ 4 ]

52 голосов
/ 05 января 2012

Вы можете использовать параметр -n echo.Примерно так:

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

РЕДАКТИРОВАТЬ: Ага, у вас уже был файл, содержащий строку и перевод строки.Что ж, я все равно оставлю это здесь, может, кому-нибудь это пригодится.

9 голосов
/ 24 ноября 2015

Просто используйте 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
6 голосов
/ 05 января 2012
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
0 голосов
/ 01 марта 2019

Приведенные выше ответы не сработали для меня. Публикация реализации 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)"
...