У меня есть текстовый файл с 700 000 строк попыток входа в систему, некоторые из которых успешны, но в основном - нет. Вот пример:Найти все строки текста, которые имеют XXX в EOL
login attempt 2 to server IP as user_name - password failed
login attempt 3 to server IP as user_name - password failed
login attempt 4 to server IP as user_name - **successful**
login attempt 5 to server IP as user_name - password failed
login attempt 6 to server IP as user_name - **successful**
и так далее. Как я могу удалить все строки, которые не заканчиваются с «успешным» словом позер-ocode:
- преобразовать все линии в отдельные массивы с каждым словом как элемент массива
, чтобы написать что-то вроде этого (псевдокод):
while(line_number <= 700000) { $all_occurrences .= (end($array) == 'successful') ? whole_line : ''; }
так только они останутся:
> login attempt 4 to server IP as user_name - **successful** login
> attempt 6 to server IP as user_name - **successful**
Любые мысли?
Спасибо!
, если это всего лишь один раз задача, это довольно легко сделать с помощью Баш строки на Linux. 'grep success biglogfile.log>./login.log' –
Спасибо Duane. Я бы хотел разобраться с решением PHP, несмотря на то, что ваш ответ решает мою проблему. – Rossitten
Вы можете использовать регулярное выражение или 'strpos', если' success' будет только когда-либо появляться на линии один раз. – chris85