c - 在 execvp 中传递 awk(printf)

标签 c linux

char* cmd[] = { "awk", "{ printf "%-10s %10s %10s %2s %2s \t%s \n", $3,$5,$6,$7,$8,$9 }", NULL};
execvp(cmd[0], cmd);
perror("execvp of awk failed");

我的程序使用管道。我想使用 execvp 在 C 中执行此命令:

ls -l | awk '{ printf "%-10s %10s %10s %2s %2s \t%s \n", $3, $5,$6,$7,$8,$9 }' 

问题是在这种情况下我找不到 printf 的正确语法。

谁能指出我的错误是什么?

最佳答案

您需要转义命令中的所有反斜杠和双引号:

char* cmd[] = { 
    "awk",
    "{ printf \"%-10s %10s %10s %2s %2s \\t%s \\n\", $3, $5, $6, $7, $8, $9 }",
    NULL
};

关于c - 在 execvp 中传递 awk(printf),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16044745/

相关文章:

linux - 如何打印 Linux 打印文件

c - 打印垃圾值,c

c - 了解如何使用 C 中的按位运算符计算数字的尾随零

PHP fatal error : Allowed memory size in/var/www/html/vendor/composer/ClassLoader.

linux - "Error: Nothing to do"使用 yum 安装 GIT 时

linux - sed:如何删除与包含正斜杠的模式匹配的行?

python - 运行 python 的 Unix 进程

c - c中的memcpy后断言失败

c - glibc(GNU C 库)是否提供了一种获取已分配内存块大小的方法?

c++ - C/C++ : Converting hexadecimal value in char to integer