转义句 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'");
我必须在终端中使用这个 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'");