2014-01-21 3 views
0

Я пытаюсь отключить файл журнала в веб-интерфейсе. Файл большой, поэтому я должен его разбивать на страницы. Самый быстрый пример, который я пытался это использовать команды Linux в PHP:Файл журнала Grep и paginate

$fp = 'filename.txt'; 
$tmp = shell_exec("wc -l $fp"); // count lines 
$from = 1; 
$to = 100; 
$text = shell_exec("sed -n '$from,{$to}p' $fp | tail -r"); 

это дает мне строки от 1 до 100 в обратном порядке, чтобы показать новый первый. Теперь я хотел бы изменить команду, чтобы разрешить поиск. Я планировал использовать команду Grep, но моя модификация не работает:

$text = shell_exec("grep 'searchstring' $fp | sed -n '$from,{$to}p' | tail -r"); 

Я хочу выполнить Grep на в то время как файл, а затем постраничной найденные строки. У меня плохое знание команд и труб Linux, поэтому я понятия не имею, как изменить его, чтобы он работал. Может ли кто-нибудь помочь? И также будет полезно, если вы могли бы помочь изменить команду wc -l, чтобы считать только соответствующие строки. Благодарю.

+2

Если вы собираетесь принять ввод пользователя, ** остерегайтесь инъекций оболочки **. Я имею в виду, что, если '$ fp =" -; rm -rf "'? –

ответ

0

AWK, конечно, лучше в этом случае (делать все в один раз)

попробовать

$text = shell_exec("grep 'searchstring' $fp | sed -n \"${from},{$to} p\" | tail -r"); 

, чтобы оболочка заменить $ от и $ к их стоимости (простая цитата взять litteraly)

Смежные вопросы