Фильтруйте файл журнала apache с помощью регулярного выражения - PullRequest
0 голосов
/ 20 сентября 2010

У меня большой файл журнала apache, и мне нужно отфильтровать его и оставить (в новом файле) только журнал с определенного IP: 192.168.1.102

Я пытаюсь использовать эту команду:

sed -e "/^192.168.1.102/d" < input.txt > output.txt

Но "/ d" удаляет эти записи, и мне не нужно их оставлять.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 20 сентября 2010

sed -n 's/^192\.168\.1\.102/&/p'

sed быстрее, чем grep на моих машинах

2 голосов
/ 20 сентября 2010

Как насчет использования grep?

cat input.txt | grep -e "^192.168.1.102" > output.txt

РЕДАКТИРОВАТЬ: Как отмечено в комментариях ниже, экранирование точек в регулярном выражении необходимо, чтобы сделать его правильным. Выход из регулярного выражения выполняется с помощью обратной косой черты:

cat input.txt | grep -e "^192\.168\.1\.102" > output.txt
0 голосов
/ 20 сентября 2010

Я думаю, что использование grep - лучшее решение, но если вы хотите использовать sed, вы можете сделать это следующим образом:

sed -e '/^192\.168\.1\.102/b' -e 'd'

Команда b пропустит все последующие команды, если регулярное выражение совпадает, и команда d, таким образом, удалит строки, для которых регулярное выражение не соответствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...