echo は既存の行に追加され、その行に続きます。

echo は既存の行に追加され、その行に続きます。

:/etc/simmmerin/bin/echoコマンドを使用してファイルのfilename既存の行に文字列を追加する方法。操作できません。

echo ":/etc/simmerin/bin/" >> filename

私が望む行を続けるのではなく、ファイルの一番下に追加されます。私はecho各ファイルやそのようなものを使用する代わりに使用したいと思いますvim

ベストアンサー1

ファイルの末尾にはすでに改行文字があり、最後の行を終了します。追加内容は別の行に表示されます。最後の改行文字を上書きする必要がありますが、リダイレクトだけではそうすることは>>できません。おそらく使用する最も簡単な方法は次のとおりですsed

$ seq 1 4 | sed -e '$s,$,stuff/to/append,'
1
2
3
4stuff/to/append

sedファイルを適切に変更するには、次のようにします。

sed -i -e '$s,$,stuff/to/append,' filename

(ドル記号には2つの意味があります。最初は次のコマンドが$実行される行を制御するアドレスです。ここでは最後の行です。2番目は行の終わりを$表す正規表現です。)


最後の行ではなく行に追加するには、最初の行を行$番号またはパターン一致に置き換えます。これにより、以下を含むすべての行に文字列が追加されますfoo

sed -i -e '/foo/ s,$,stuff/to/append,' filename

ここでは、sコマンド区切り文字としてカンマを使用しています。スラッシュがより一般的ですが、追加されるテキストにはスラッシュが含まれています。このsコマンドを使用すると、(ほぼ)すべての文字を使用できます。

正しい行を見つけるために使用されるパターンにスラッシュがある場合は、同様の\,foo,アドレスを使用できます。つまり、バックスラッシュで始まり、便利な区切り文字を使用できます。

おすすめ記事