web-dev-qa-db-ja.com

Bash:ファイルの末尾に改行なしで文字列を追加します

改行なしでファイルの末尾に文字列を追加するにはどうすればよいですか?

たとえば、>>を使用している場合、ファイルの末尾に改行が追加されます。

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
21
Crazy_Bash
sed '$s/$/yourText2/' list.txt > _list.txt_ && mv -- _list.txt_ list.txt

sed実装が-iオプションをサポートしている場合、以下を使用できます。

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

2番目のソリューションでは、バックアップも必要になります(最初のソリューションでは、手動でバックアップする必要があります)。

代わりに:

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

または

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

Echoの-nパラメーターを使用できます。このような:

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

編集:ああ、あなたはすでに文字列と改行を含むファイルを持っていました。まあ、とにかくここに置いておきます、誰かに役立つかもしれません。

55
Franz

代わりに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
9
fedorqui

上記の答えは私にはうまくいきませんでした。 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)"
0
Will Charlton