web-dev-qa-db-ja.com

キャリッジリターンなしで$ something >> file.txtをエコーするにはどうすればよいですか?

echo $something >> file.txtにすると、ファイルに新しい行が追加されます。

改行せずに追加したい場合はどうすればよいですか。

75
onemach

それがecho -nの目的です。

printfechoよりも非常に柔軟で移植性があります。 C/Perlなどの実装と同様に、フォーマット文字列を\nで終了しないと、改行は表示されません。

printf "%s" "$something" >> file.txt
38
glenn jackman

コマンドの出力を使用している場合は、xargsをechoと組み合わせて使用​​できます。

/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
7
zainengineer

trは別の選択肢です。

入力としてechoを使用している場合は、どのtr -d '\n'からでも抜け出すことができます。

このテクニックは、他のコマンドからの出力をパイプラインするときにも有効です(単一行の出力で)。さらに、ファイルにUNIXまたはDOSの行末があるかどうかわからない場合は、tr -d '\n\r'を使用できます。

これが動作することを示すいくつかのテストがあります。

改行が含まれています。

something='0123456789' ; echo ${something} | wc -c
11

UNIX改行:

something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10

DOSスタイル

something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10

BSDのtrとGNU trでテスト済み。

0
Nic Doye