:/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,
アドレスを使用できます。つまり、バックスラッシュで始まり、便利な区切り文字を使用できます。
答え2
既存のファイルを変更するには、sed
コマンドを使用できます。
追加する文字列とそれを挿入したい行番号があるとします。
mystring=":/etc/simmerin/bin/"
lineno=10
文字列の挿入スタートライン:
sed "${lineno}s,^,${mystring}," file
文字列の挿入終わりライン:
sed "${lineno}s,\$,${mystring}," file
文字列の挿入今後銀行:
sed "${lineno}s,^,${mystring}\n," file
文字列の挿入後ろに銀行:
sed "${lineno}s,\$,\n${mystring}," file
答え3
newline
すでにファイルの末尾にあります。改行サイズは1バイトです。このtruncate
コマンドを使用すると、ファイルを1バイト縮小してからファイルの末尾に追加できます。
truncate -s -1 filename && echo ":/etc/simmerin/bin/" >> filename
答え4
echoの代わりにprintfを使用すると、デフォルトでは「\ n」は追加されません。
printfはbashコマンドなので、シェルがそれをサポートしていることを確認してください。