gpt4 book ai didi

linux - 使用 bash shell 脚本挂载图像和编辑配置文件(在文件系统内)

转载 作者:太空宇宙 更新时间:2023-11-04 10:54:29 25 4
gpt4 key购买 nike

我需要挂载一个镜像文件(.qcow2 文件)并使用以下内容编辑文件系统中的其中一个文件:

address     192.168.xxx.xxx/24 active 
primary-dns xx.x.64.20
dns-domain xxxx.xxtest
static-route xx1.xx.0/18 next-hop xxx.xxx.xxx.x
li-local-save

我编写了以下用于安装 .qcow2 文件的自动化代码,但不确定是否可以使用 sed 编辑该文件。请帮忙。

#!/bin/bash
mkdir mntpt
modprobe nbd max_part=8
qemu-nbd --connect=/dev/nbd0 $PWD/$1
mount /dev/nbd0p1 mntpt
sed -i "s/^\(address \).*/\1xxx.xxx.xxx/24 active/g" mntpt/bof.cfg
sed -i "s/^\(primary-dns \).*/\1x1.64.20/g" mntpt/bof.cfg
sed -i "s/^\(no \).*/\1li-local-save/g" mntpt/bof.cfg

qemu-nbd --disconnect /dev/nbd0
umount mntpt

最佳答案

编写三个单独的 sed 脚本似乎很浪费,而且可能存在问题。在 sed 脚本中用换行符或(在某些方言中)分号分隔命令。

此外,如果字符串需要包含斜线,您需要转义字符串中的斜线,或者使用不同的定界符。您可以使用 s:foo:bar: 作为 s/foo/bar/ 的同义词(使用任何非字母、非数字字符代替斜杠,真的)。

sed -i 's:^\(address \).*:\1xxx.xxx.xxx/24 active:
s/^\(primary-dns \).*/\1x1.64.20/
s/^\(no \).*/\1li-local-save/' mntpt/bof.cfg

(据我所知,您拥有的 /g 标志是多余的。如果您需要多次替换相同的值在同一行,那么重新添加它。)

关于linux - 使用 bash shell 脚本挂载图像和编辑配置文件(在文件系统内),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29385795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com