转义句 Sed System() C

Escape Sentence Sed System() C

我必须在终端中使用这个 Linux 命令:

sed -i "/\[multilib\]/,/Include/"'s/#//' /etc/pacman.conf

它所做的是取消对行的注释

#[multilib][...]
#Include[...]

诀窍是我试图在 C 的 system() 函数中使用它。所以我最终得到了这段代码:

system("sed -i "/\[multilib\]/,/Include/"'s/#//' /etc/pacman.conf");

但是出了点问题,所以我决定使用回显来查看输出:

system("echo 'sed -i "/\[multilib\]/,/Include/"'s/#//' /etc/pacman.conf'");

我看到输出并不是我想要使用的,你们中的一些人(谢谢大家)告诉我可以使用转义句,所以我做了一些更改:

system("echo 'sed -i \"/\[multilib\]/,/Include/\"\'s/#//\' /etc/pacman.conf'");

现在 xterm 中的输出是:

sed -i "/[\multilib\]/,/Include/"s/#// pacman.conf

如您所见,问题是:

s/#//

缺少他的 ' ' 标记。虽然我用了转义句。

编辑 3: 评论中的解释有效。 linux 终端中没有 system() 的 echo 表明尽管有转义句,xterm 也没有获得 ' ' 标记。所以它适用于我的问题的转义句。

编辑 4: 不需要新的线程,它现在可以工作了...别告诉我为什么我刚刚重写了这个东西。

要将 " 放入字符串中,请将其写为 \"。这称为 转义序列

system("echo '\"/[multilib]/,/Include/\" 's/#//' /etc/pacman.conf'");