Использование Grep для получения определенных записей и игнорирования других

есть ли способ использовать grep для игнорирования строк с 141.8. .. содержится в них, но получить строки, которые имеют GET? Прямо сейчас у меня есть это, но я, должно быть, делаю что-то не так

sudo grep -v '^141.8.83.213' && "GET" /home/tsec/prototype/logs/glastopf.log | sort -k4,4 | tac | sort -uk4,4 | sort -k1,2 | tail -n 10 > /home/tsec/prototype/logs/ext$

Это то, что содержит журнал

2016-04-20 13:30:59,818 (glastopf.glastopf) 141.8.83.213 requested GET /favicon.ico on e1f841a092e9:80
2016-04-20 13:31:01,817 (glastopf.glastopf) 141.8.83.213 requested POST /index on e1f841a092e9:80
2016-04-20 13:31:01,855 (glastopf.glastopf) 141.8.83.213 requested GET /style.css on e1f841a092e9:80
2016-04-20 13:31:01,883 (glastopf.glastopf) 141.8.83.213 requested GET /favicon.ico on e1f841a092e9:80
2016-04-20 16:39:55,713 (glastopf.glastopf) Initializing Glastopf 3.1.3-dev using "/data/glastopf" as work directory.
2016-04-20 16:39:55,797 (glastopf.glastopf) Connecting to main database with: sqlite:///db/glastopf.db
2016-04-20 16:39:55,834 (glastopf.glastopf) Glastopf started and privileges dropped.
2016-04-20 17:54:33,857 (glastopf.glastopf) 62.210.252.43 requested GET / on de96c7b4104d:80
2016-04-20 17:54:34,101 (glastopf.glastopf) 62.210.252.43 requested GET /HNAP1/ on de96c7b4104d:80
2016-04-20 22:06:20,265 (glastopf.glastopf) Initializing Glastopf 3.1.3-dev using "/data/glastopf" as work directory.
2016-04-20 22:06:20,399 (glastopf.glastopf) Connecting to main database with: sqlite:///db/glastopf.db
2016-04-20 22:06:20,446 (glastopf.glastopf) Glastopf started and privileges dropped.
2016-04-20 22:33:23,136 (glastopf.glastopf) 74.91.23.109 requested GET / on 11bbb1d43c02:80

Так что в конце я хочу получить записи, которые имеют GET в строке, но игнорируют тех, кто имеет IP 141.8.83.213

1
задан 21 April 2016 в 03:01

3 ответа

Используйте два grep с:

grep "GET" /home/tsec/prototype/logs/glastopf.log |  grep -vF 141.8.83.213 | ...

От man grep :

-F    Match using fixed strings. Treat each  pattern  specified  as  a
      string  instead  of  a  regular  expression.  If  an  input line
      contains any of the patterns as a contiguous sequence of  bytes,
      the line shall be matched. A null string shall match every line.

-v    Select  lines not matching any of the specified patterns. If the
      -v option is not specified, selected lines shall be  those  that
      match any of the specified patterns.

Так -F позволяет нам постараться не выходить эти ., который иначе соответствовал бы любому символу. -v классический способ сказать grep инвертировать соответствие.

0
ответ дан 21 April 2016 в 13:01
  • 1
    У меня уже есть ' плагин load_flash_only' установка набора к ' false' в моем about:config – user3477071 5 September 2017 в 04:48

Единственный grep,

grep -P '^(?!.*?141\.8\.83\.213).*\bGET\b' file

ДЕМОНСТРАЦИЯ

0
ответ дан 21 April 2016 в 13:01
  • 1
    Созданный символьная ссылка на/usr/lib/jvm/java-8-oracle/jre/lib/amd64/libnpjp2.so от/usr/lib/firefox и/usr/lib/firefox/plugins каталогов. Однако, тот же результат, получите то же исключение после перезапуска Firefox. – user3477071 5 September 2017 в 05:15

Awk допускает логические операторы в regex, таким образом, можно сказать, что соответствие ДОБИРАЕТСЯ и также те строки, которые не содержат ip

  awk '/GET/&&!/141\.8\.83\.213/' log. txt
0
ответ дан 21 April 2016 в 13:01
  • 1
    It' s лучше, чтобы сделать ln к libnpjp2 в/usr/lib/firefox папке. Вместо cd $HOME/.mozilla/plugins, попробуйте cd /usr/lib/firefox/browser/plugins | sudo ln -s /usr/lib/jvm/java-8-oracle/jre/lib/amd64/libnpjp2.so. Каждый раз я пытаюсь к ln представить папку, это doesn' t работа. – Redbob 5 September 2017 в 05:09

Другие вопросы по тегам:

Похожие вопросы: