Я использую следующую команду, чтобы перенаправить вывод СЭД в TMP файла:перенаправлять вывод СЭД (по трубопроводу из Grep) в файл в программе C
grep --include=*.txt -A 3 -rnw abx/ -F -e 'simple' | sed -n 's#.*/\([^/]*\.txt\).*"\([^"]*\)*"[[:space:]]*,[[:space:]]*/\*[[:space:]]*col[[:space:]]*\*/#\1\n\2#p' > tmp
Выход перенаправляется в TMP если он используется в терминале, но в программе C, ничего не записывается в 'tmp'.
Программа C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char cmd[1028];
strcpy (cmd, "grep --include=*.txt -A 3 -rnw abx/ -F -e 'simple' | sed -u -n 's#.*/\\([^/]*\\.txt\\).*\"\\([^\"]*\\)*\"[[:space:]]*,[[:space:]]*/\\*[[:space:]]*col[[:space:]]*\\*/#\\1\\n\\2#p' > tmp");
system (cmd);
return 0;
}
РЕДАКТИРОВАТЬ: Пример текстового файл:
simple =
"sik", /* fill */
"trauma", /* type */
"hui", /* col */
Этот файл хранятся в ABX /.
вы можете распечатать строку, чтобы увидеть, что вы делаете. Вы также можете проверить возвращаемое значение системного вызова. – mch
Возврат системного вызова равен 0. Я отредактировал вопрос. – Shahzad
Возможный дубликат [перенаправление вывода на файл в C] (http://stackoverflow.com/questions/8516823/redirecting-output-to-a-file-in-c) – Cyrus