在文件中的其他字符串之前和之前插入特定字符串

在文件中的其他字符串之前和之前插入特定字符串

因此,我尝试在 Linux 上的文件中插入b.b00 ---aftermodules=和 before 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 ---after插入modules=,这样做就已经确保它出现在 before 之前jumstart.gz。所以,你几乎就在那里,但由于某种原因,你在命令中添加了额外的[和,并且由于这些字符没有出现在文件中,这就是命令不执行任何操作的原因。试试这个:]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 ---以同样的方式保留其余内容

相关内容