c - sed 执行失败

标签 c sed

我正在创建一个小型 unix shell,execve 在 sed 方面存在问题。当我执行 sed -e 's/Roses/Turnips/' 时,命令失败并显示 execve。

#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>

int main(int ac, char **av, char **envp)
{
    char *argv[] = { "/usr/bin/sed", "-e", "'s/Roses/Turnips/'", 0 };
    execve(argv[0], &argv[0], envp);
    fprintf(stderr, "Failed!\n");
    return -1;
}

错误:

/usr/bin/sed: -e expression #1, char 1: unknown command: `''

最佳答案

去掉 s/// 参数周围的单引号。这些是 shell 语法的一部分,而不是 sed 语法。

char *argv[] = { "/usr/bin/sed", "-e", "s/Roses/Turnips/", 0 };

execve 直接执行程序,不使用 shell。每个参数都按字面意思发送到程序,因此在 shell 中运行程序时不需要转义或引用。

关于c - sed 执行失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41194252/

相关文章:

最初未绘制组合框下拉列表

c - 将数组的每个元素乘以C中的数字

C - 结构数组元素交换

regex - 用 sed 剥离十六进制字节 - 不匹配

linux - 从方括号和引号中提取字符串

sed 中的正则表达式替换特定字符串

sed - sed 给出的前面的正则表达式错误无效

更改c指针值的正确方法

regex - 使用 sed 获取文件的 IPv4 地址并使用前缀导出

c - 如何在 Linux 中以编程方式获取给定相对路径的绝对路径?