ファイルの最後の行を見つけて追加するには、SED または AWK コマンドが必要です</pre>
。
のような:
LINELINELINE
変更点:
LINELINELINE</pre>
答え1
また、いわゆる複合コマンド。これはコマンドのリストであり、シェルは複合コマンドの外部の目的でこれを単一のコマンドとして扱います。
はい、それはいくぶん再帰的な定義ですが、例を挙げると理解しやすくなります。
たとえば、ファイルを と で囲むには<pre>
、</pre>
次のようなコマンドを使用します。
( printf '<pre>' ; cat originalfile ; printf '</pre>' ) > newfile
一時ファイルがなく、あるコマンドの出力を何か他のもので囲みたい場合は、 の代わりにそのコマンドを挿入できますcat
。
( printf '<pre>' ; find / -type d -print ; printf '</pre>' ) > somefile
これはすべて、複合コマンドの一部ではなく、複合コマンド全体の出力にリダイレクトを適用することによって機能します。
もちろん、これは要求sed
どおりawk
には使用されませんが、この種のタスクでは、それらのツールを使用するのはやりすぎです。
答え2
これはどう:
echo "</pre>" >> /path/to/the/file
または、最初は少し複雑で、出力に別のファイルを使用する必要があります。
echo "<pre>" | cat - /path/to/the/file > /path/to/the/newfile
cat
は連結を意味し、この場合は 2 つの引数があります。 は-
標準入力を意味するので、連結されたファイルの最初の部分はそれにパイプされたもの (この場合はecho
) になります。 2 番目の引数は、先頭に追加するファイルです。連結されたファイルは に出力されますnewfile
。
答え3
(GNU) の場合sed
(質問のタグに従って):
$ sed -i -e '$a\</pre>' file.in
この意志追加</pre>
そこに という線を引くfile.in
。
あるいは:
$ sed -i -e '$s@\(.*\)@\1</pre>@' file.in
</pre>
これはの最後の行に追加されますfile.in
。