pipe inside (awk) cpp 中的系统命令

pipe inside (awk) System command in cpp

我有 awk 命令,我想将其包装在 system() 中。

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

获取错误为,

error: unknown escape sequence '\|'

我试过用不同的方式引用。但是,没有任何帮助。

可能正在转义 -F"|"报价??

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

你只需要转义 \:

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

当您创建 C++ 字符串时,\ 被视为转义字符,除非您对其进行转义。

或者在这种情况下,您可以只引用定界符,避免转义它:

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

我假设您的脚本可能比实际情况更复杂,但我还是为您简化了它,以防有帮助。

最后一个选项,使用原始字符串文字(C++11 支持):

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

R 前缀意味着 \ 不再被解释为转义字符。