C++ cpp中的管道内部(awk)系统命令
我有一个awk命令wch,我想在system()中包装它 将错误获取为 错误:未知的转义序列“\\\” 我试着用不同的方式引用。但是,没有任何帮助。也许可以避开-F“|”引号C++ cpp中的管道内部(awk)系统命令,c++,string,awk,pipeline,C++,String,Awk,Pipeline,我有一个awk命令wch,我想在system()中包装它 将错误获取为 错误:未知的转义序列“\\\” 我试着用不同的方式引用。但是,没有任何帮助。也许可以避开-F“|”引号 您只需转义\: std::string cmd = "awk -F\\| '{ var1=$2; var2=$5; print var1, var2 }' 1.txt"; //-----------------------^ 当你创建C++字符串时, \>代码>被当作一个转义字符,除非你脱逃它。< /P> 或者,在本例
您只需转义
\
:
std::string cmd = "awk -F\\| '{ var1=$2; var2=$5; print var1, var2 }' 1.txt";
//-----------------------^
当你创建C++字符串时,<代码> \>代码>被当作一个转义字符,除非你脱逃它。< /P> 或者,在本例中,您可以只引用分隔符,避免转义:
std::string cmd = "awk -F'|' '{ print $2, $5 }' 1.txt";
我假设你的脚本可能比现实中的更复杂,但我还是为你简化了它,以防有所帮助
最后一个选项,使用原始字符串文字(C++11支持):
R
前缀意味着\
不再被解释为转义字符。看这里
std::string cmd = "awk -F\\| '{ var1=$2; var2=$5; print var1, var2 }' 1.txt";
//-----------------------^
std::string cmd = "awk -F'|' '{ print $2, $5 }' 1.txt";
std::string cmd = R"awk -F\| '{ print $2, $5 }' 1.txt";