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
前缀意味着 \
不再被解释为转义字符。
我有 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
前缀意味着 \
不再被解释为转义字符。