![在文件中的其他字符串之前和之前插入特定字符串](https://linux22.com/image/213688/%E5%9C%A8%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E5%85%B6%E4%BB%96%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B9%8B%E5%89%8D%E5%92%8C%E4%B9%8B%E5%89%8D%E6%8F%92%E5%85%A5%E7%89%B9%E5%AE%9A%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
因此,我尝试在 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 ---以同样的方式保留其余内容