Подтвердить что ты не робот

Bash: добавить строку в конец файла без разрыва строки

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

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

cat list.txt
yourText1
[email protected]:/# echo yourText2 >> list.txt
[email protected]:/# cat list.txt
yourText1
yourText2

Я хочу добавить yourText2 сразу после yourText1

[email protected]:/# cat list.txt
yourText1yourText2
4b9b3361

Ответ 1

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

Вы можете использовать параметр -n для эха. Вот так:

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

EDIT: Ага, у вас уже есть файл, содержащий строку и новую строку. Ну, я все равно оставлю это здесь, может быть, нам полезно для кого-то.

Ответ 3

Просто используйте printf вместо этого, так как он не печатает новую строку по умолчанию:

printf "final line" >> file

Test

Создайте файл, а затем добавьте дополнительную строку без завершающей новой строки. Примечание. Я использую cat -vet для просмотра новых строк.

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