Sed pacman.conf删除#用于multilib并包含

Ami*_*IRI 4 bash sed archlinux

我的自定义安装脚本实际上正对着墙。

在脚本的一点上,我需要为64位计算机启用64位存储库,并且(例如)我需要从该格式获取:

#multilib-testing[...]
#include[...]

#multilib[...]
#include[...]
Run Code Online (Sandbox Code Playgroud)

以这种格式

#multilib-testing[...]
#include[...]

multilib[...]
include[...]
Run Code Online (Sandbox Code Playgroud)

但是,正如您所看到的,到处都有包含,我不能使用sed,因为它会递归删除该特定文件的所有“包含”,这不是我想要的...

我似乎找不到sed的解决方案。我尝试了在另一个线程上看到的东西

cat /etc/pacman.conf | grep -A 1 "multilib"
Run Code Online (Sandbox Code Playgroud)

但是我做得不好,我没有选择...

理想情况下,我希望获得一个sed解决方案(但是,只要您解释一下,请随时告诉我还有哪些其他选择!)。

模式(和开始)应该是这样的:

sed -i '/multilib/ s/#//' /etc/pacman.conf
Run Code Online (Sandbox Code Playgroud)

并且对于模式和之后的行(包含在内)应该是有效的。

此外,如果您能在实际学习中真正教给我您为什么这样做或那样做,并且如果我不知道为什么会那样做,我将不记得某件事,我将感到高兴。(也请原谅我的英语中期)。

小智 5

我们可以使用它来按模式匹配范围。然后,我们可以匹配#每行开头的并将其删除。

sed -i "/\[multilib\]/,/Include/"'s/^#//' /etc/pacman.conf
Run Code Online (Sandbox Code Playgroud)