【发布时间】:2015-08-11 22:14:05
【问题描述】:
从 C++ 程序运行此命令时:
std::system("p4 print //perforce/path/to/file/configurations.json | grep -m 1 Configuration | awk '{sub(/,/, \"\"); sub(/\"/, \"\"); print $2}' > output.txt");
在调用 awk 之前,该命令似乎正常工作,grep 命令输出预期的字符串,但 awk 命令失败并显示以下错误消息:
awk: cmd. line:1: fatal: cannot open file '>' for reading (No such file or directory)
Awk 似乎将输出重定向运算符解释为输入文件的名称。
由于某种原因,在 Cygwin 下的 Windows 上执行时会出现此错误,但在 Linux 上执行时可以正常工作(分别使用 MSVC 12 和 gcc/4.8.1 编译)。
【问题讨论】:
-
您是否考虑过使用 MinGW,并从系统运行类似 UNIX 的 shell?
-
我使用的是 Cygwin,所以我可以访问 UNIX 实用程序。
-
请注意,您可以将
grep | awk变成awk '/Configuration/ {gsub(/[,\"]/, \"\", $2); print $2; exit}'
标签: c++ linux windows bash awk