CPP中的管道内部(AWK)系统命令



我有awk命令wch我要包装在system()中。

std::string cmd = "awk -F|  '{ var1=$2; var2=$5; print var1, var2 }' 1.txt";
system(cmd.c_str());

获取错误为

错误:未知逃脱序列' |'

我尝试以不同的方式提供报价。但是,没有任何帮助。

您只需要逃脱

std::string cmd = "awk -F\|  '{ var1=$2; var2=$5; print var1, var2 }' 1.txt";
//-----------------------^

创建C 字符串时,被视为逃生角色,除非您逃脱。

在这种情况下,您可以引用定界符,避免逃脱它:

std::string cmd = "awk -F'|'  '{ print $2, $5 }' 1.txt";

我认为您的脚本可能比实际上更复杂,但无论如何我都为您简化了它。

最终选项,使用原始字符串文字(在C 11中支持):

std::string cmd = R"awk -F|  '{ print $2, $5 }' 1.txt";

R前缀表示不再解释为逃生字符。

也许剪剪下-f" |"报价??

std::string cmd = "awk -F"|" '{ var1=$2; var2=$5; print var1, var2 }' 1.txt";
system(cmd.c_str());

最新更新