URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 85955
[ Назад ]

Исходное сообщение
"Редактирование большого файла"

Отправлено 2look , 14-Июл-09 17:18 
Друзья,
как в большом текстовом файле убрать строки в которых не одно ключевое слово, а несколько?
Чтоб было понятней: нужно безболезненно из access.log убрать строки в которых определенный ip адресс ломится на определенные сайты. Все остальные надписи с этим айпишником должны остаться, все остальные (те же) сайты (на других айпишниках) должны остаться.
спасибо.

Содержание

Сообщения в этом обсуждении
"Редактирование большого файла"
Отправлено ALex_hha , 14-Июл-09 17:35 
>Друзья,
>как в большом текстовом файле убрать строки в которых не одно ключевое
>слово, а несколько?
>Чтоб было понятней: нужно безболезненно из access.log убрать строки в которых определенный
>ip адресс ломится на определенные сайты. Все остальные надписи с этим
>айпишником должны остаться, все остальные (те же) сайты (на других айпишниках)
>должны остаться.
>спасибо.

# cat access.log | grep -v ^'условие' > test.log

примерно так


"Редактирование большого файла"
Отправлено 2look , 14-Июл-09 18:00 
>[оверквотинг удален]
>>слово, а несколько?
>>Чтоб было понятней: нужно безболезненно из access.log убрать строки в которых определенный
>>ip адресс ломится на определенные сайты. Все остальные надписи с этим
>>айпишником должны остаться, все остальные (те же) сайты (на других айпишниках)
>>должны остаться.
>>спасибо.
>
># cat access.log | grep -v ^'условие' > test.log
>
>примерно так

про 'условие' я и спрашивал. спасибо )



"Редактирование большого файла"
Отправлено сабакка , 14-Июл-09 20:46 
grep "cron.*sa2" /var/log/messages

"Редактирован"
Отправлено Andrey Mitrofanov , 14-Июл-09 17:40 
grep -v "слово.+втрое"

В задаче с логами порядок слов известен и более вычурные варианты излишни. Ну, разве что -

awk '!($3=="слово"&&$7~/второе/)'
или
awk '!($3=="слово"&&index($7,"второе")>0)'


"Редактирован"
Отправлено 2look , 14-Июл-09 18:31 
>grep -v "слово.+втрое"

не понял, сорри..
В строке файла есть айпишник 10.10.10.10, в той же строке есть слово slovonanana.ru
Именно эти строки мне и надо убрать. Как объяснить grep-у что меня интересуют строки в котором есть и одно слово и другое?
Я само правило не могу догнать...


"Редактирован"
Отправлено angra , 14-Июл-09 19:14 
Тут возникнет обычная проблема с версиями grep/awk/sed/итд.
Как ленивый человек я решаю ее при помощи perl, так как он везде един.
perl -ne 'print unless /10\.10\.10\.10.*slovonanana\.ru/' путь_к_файлу
или если порядок неизвестен
perl -ne 'print unless /10\.10\.10\.10/ and /slovonanana\.ru/' путь_к_файлу
При желании можно добавить ключик -i, только сначала прочитать про него в man perlrun

"Редактирован"
Отправлено 2look , 15-Июл-09 09:43 
>Тут возникнет обычная проблема с версиями grep/awk/sed/итд.
>Как ленивый человек я решаю ее при помощи perl, так как он
>везде един.
>perl -ne 'print unless /10\.10\.10\.10.*slovonanana\.ru/' путь_к_файлу
>или если порядок неизвестен
>perl -ne 'print unless /10\.10\.10\.10/ and /slovonanana\.ru/' путь_к_файлу
>При желании можно добавить ключик -i, только сначала прочитать про него в
>man perlrun

Спасибо! перл так перл.


"Редактирован"
Отправлено Andrey Mitrofanov , 15-Июл-09 09:58 
>Я само правило не могу догнать...

"Надо же себя заставлять."/анекдот

http:/man.shtml?topic=grep&category=1
http:/man.shtml?topic=regex&category=7&russian=0

...хотел было в хендбук послать, да там греп используется без объяснений: пранк сорвался.

http://google.ru/search?q=%22%D1%80%D0&#...
и гугль не очень помогает (ссылки про PHP скорее помешают?).


"Редактирование большого файла"
Отправлено 2look , 15-Июл-09 15:03 
Господа, спасибо за помощь в изменение файла. Теперь проблема в том что сквид в новый файл access.log ничего не пишет. Не принял он его. Как уговорить?
предполагал что проблема в принадлежности к группе или владельца. сейчас так:
-rw-r--r--  1 nobody  nogroup ... access.log - или проблема не в этом?



"Редактирование большого файла"
Отправлено 2look , 15-Июл-09 16:01 
>Господа, спасибо за помощь в изменение файла. Теперь проблема в том что
>сквид в новый файл access.log ничего не пишет. Не принял он
>его. Как уговорить?
>предполагал что проблема в принадлежности к группе или владельца. сейчас так:
>-rw-r--r--  1 nobody  nogroup ... access.log - или проблема не
>в этом?

Разобрался. Спасибо.
Перезапустил сквид и все стало хорошо.