Небольшой контекст для моего проекта: у нас есть произвольное количество файлов, которым нужен отдельный процесс для каждого файла, а затем нужно искать с помощью вызова exec(), чтобы найти каждый раз, когда используется определенный KEY. Я знаю, как использовать grep из командной строки, используя эту команду:
grep -o KEY FILENAME.txt | wc -l > OUTPUT.txt
Но я не могу понять, как это сделать на С++. Я нашел здесь тему, которая дала мне эту строку.
execl("/bin/grep","grep",pattern,filename,NULL);
Он компилируется и запускается, поэтому я думаю, что он работает, но проблема в том, что мне нужно вывести количество раз, когда шаблон встречается в файле, и я попробовал строку ниже, но, как и ожидалось, это не сработало. Это дало эту ошибку «grep: out.txt: нет такого файла или каталога»
execl("/bin/grep", "grep",pattern,fileName,output,NULL);
Вот направления этой части моего проекта.
Вы можете сделать это с помощью системного вызова exec() , указав путь к исполняемому файлу оболочки (обычно /bin/sh ) и, в качестве аргументов /bin/sh , строку -c и строку соответствующий команде поиска ( grep -o ... ).
Некоторые рекомендации здесь будут высоко оценены!
grep
напрямую. И что ты делаешь? Вы выполняетеgrep
напрямую. И когда это не работает, все равно вместо того, чтобы читать указания вашего проекта, вы спрашиваете здесь. Пожалуйста, ознакомьтесь с указаниями вашего проекта. - person   schedule 06.10.2015