ファイル内の他の文字列の前と前に特定の文字列を挿入します。

ファイル内の他の文字列の前と前に特定の文字列を挿入します。

それで、Linuxのファイルにb.b00 ---前後modules=を挿入しようとしていますが、jumpstart.gz実際に何をすべきかわからないようです。私はフォーラムで別の答えを見ましたが、そのうち何もうまくいかなかったようです。私のファイル名はboot.cfgで、その内容は次のとおりです。

bootstate=0
timeout=5
kernelopt=runweasel
modules=jumstart.gz --- useropts.gz --- features.gz --- qeden.v00 ---tpm.v00
build=3.322.2
updated=0

私が探しているものは次のとおりです。

bootstate=0
timeout=5
kernelopt=runweasel
modules=b.b00 --- jumstart.gz --- useropts.gz --- features.gz --- qeden.v00 ---tpm.v00
build=3.322.2
updated=0

したがって、デフォルトではb.b00 ---aftermodulesとbeforeを追加しますjumpstart.gz

私が試したいくつかのコマンドは次のとおりです。

sed -i '/\[modules=\]/a b.b00 ---' boot.cfg
sed -i '/^jumpstart.gz.*/i b.b00 ---' boot.cfg

これらのコマンドのどれもファイルに影響を与えないようです。誰もが正しい方向に私を指すことができますか?あなたの助けに非常に感謝します!

答え1

私が知っている限り、実際にはb.b00 ---後ろに挿入するだけですmodules=。これにより、すでに前に表示されることが保証されますjumstart.gz。これでほぼすべてが来ましたが、何らかの理由で[コマンドにextraとを追加しましたが、その文字がファイルに表示されないため、コマンドは何もしません。この試み:]sed

sed 's/modules=/modules=b.b00 --- /' grub.cfg

期待どおりに機能していることを確認したら、-iファイルを編集するには

sed -i 's/modules=/modules=b.b00 --- /' grub.cfg

一致する行でのみこれを実行したい場合modules= そして含まれていますjumpstart.gz。以下を試してください。

sed '/jumstart.gz/s/modules=/modules=b.b00 --- /' grub.cfg

繰り返しますが、ファイルを編集するには、次のようにします-i

sed -i '/jumstart.gz/s/modules=/modules=b.b00 --- /' grub.cfg

答え2

この文を使用すると、次のように動作します。

sed -i 's/modules=/modules=b.b00 --- /g' boot.cfg

モジュール=に置き換えられますモジュール=b.b00 ---残りも同じにしてください

関連情報