Друзья,
как в большом текстовом файле убрать строки в которых не одно ключевое слово, а несколько?
Чтоб было понятней: нужно безболезненно из access.log убрать строки в которых определенный ip адресс ломится на определенные сайты. Все остальные надписи с этим айпишником должны остаться, все остальные (те же) сайты (на других айпишниках) должны остаться.
спасибо.
>Друзья,
>как в большом текстовом файле убрать строки в которых не одно ключевое
>слово, а несколько?
>Чтоб было понятней: нужно безболезненно из access.log убрать строки в которых определенный
>ip адресс ломится на определенные сайты. Все остальные надписи с этим
>айпишником должны остаться, все остальные (те же) сайты (на других айпишниках)
>должны остаться.
>спасибо.# cat access.log | grep -v ^'условие' > test.log
примерно так
>[оверквотинг удален]
>>слово, а несколько?
>>Чтоб было понятней: нужно безболезненно из access.log убрать строки в которых определенный
>>ip адресс ломится на определенные сайты. Все остальные надписи с этим
>>айпишником должны остаться, все остальные (те же) сайты (на других айпишниках)
>>должны остаться.
>>спасибо.
>
># cat access.log | grep -v ^'условие' > test.log
>
>примерно такпро 'условие' я и спрашивал. спасибо )
grep "cron.*sa2" /var/log/messages
grep -v "слово.+втрое"В задаче с логами порядок слов известен и более вычурные варианты излишни. Ну, разве что -
awk '!($3=="слово"&&$7~/второе/)'
или
awk '!($3=="слово"&&index($7,"второе")>0)'
>grep -v "слово.+втрое"не понял, сорри..
В строке файла есть айпишник 10.10.10.10, в той же строке есть слово slovonanana.ru
Именно эти строки мне и надо убрать. Как объяснить grep-у что меня интересуют строки в котором есть и одно слово и другое?
Я само правило не могу догнать...
Тут возникнет обычная проблема с версиями 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
>Тут возникнет обычная проблема с версиями 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Спасибо! перл так перл.
>Я само правило не могу догнать..."Надо же себя заставлять."/анекдот
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 скорее помешают?).
Господа, спасибо за помощь в изменение файла. Теперь проблема в том что сквид в новый файл access.log ничего не пишет. Не принял он его. Как уговорить?
предполагал что проблема в принадлежности к группе или владельца. сейчас так:
-rw-r--r-- 1 nobody nogroup ... access.log - или проблема не в этом?
>Господа, спасибо за помощь в изменение файла. Теперь проблема в том что
>сквид в новый файл access.log ничего не пишет. Не принял он
>его. Как уговорить?
>предполагал что проблема в принадлежности к группе или владельца. сейчас так:
>-rw-r--r-- 1 nobody nogroup ... access.log - или проблема не
>в этом?Разобрался. Спасибо.
Перезапустил сквид и все стало хорошо.