我有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());