Думаю, это может быть такая статья:
Создание значимых данных из веб-журналов с использованием базового SAS
Там обсуждается параграф блокировка диапазонов класса C:
После разделения IP-адреса на его компоненты фильтрация диапазонов IP-адресов становится простой. Фильтр класса B применяется к первым двум октетам , например 168.126.xx.xx. Это переменная Onetwo в приведенном выше примере кода . Чаще используются диапазоны класса C, поскольку они нацелены на целые серверы и используют три из четырех октетов, например 168.126.56.xx. В приведенном выше примере кода это поле Three , поскольку Usrhost является значением TCP / IP-адреса веб-журнала.
И одно упоминание wget
в блокировке на основе строки пользовательского агента:
Наш предпочтительный метод идентификации строки пользовательского агента использует функцию сопоставления с шаблоном индекса . Например:
if index (lowcase (agentstr), 'keynote') или index (lowcase (agentstr), 'sureseeker') или index (lowcase (agentstr), 'wget ') или
Это был пятый результат поиска в Google по запросу "log analysis wget" за 2001 год .
Мне удалось перевести grep
из конвейера в sed
с помощью!d
sed -e'/\.foo$/!d' -e's/file/blag/'./input
Ответ получен из этого сообщения на форуме
Или, в зеркальной форме, отключите стандартную -печать, выполните замены, затем напечатайте только нужные строки:
sed -n 's/file/blag/; /\.foo$/p' < input
Или отфильтруйте нужные строки сначала , затем выполните замену -и -печать:
sed -n '/\.foo$/ { s/file/blag/; p }' < input
Выберите строки, которые заканчиваются на .foo
, и выполните замену только для этих строк:
sed '/\.foo$/{s/file/blag/}'
Тестирование:
$ echo $'file.foo\nfile2.foo\nfile.bar\nfile3.foo' | sed '/\.foo$/{s/file/blag/}'
blag.foo
blag2.foo
file.bar
blag3.foo
sed -n 's/\(file\)\(.*\)\(\.foo\)/blang\2\3/p' input.txt > output.txt
(записывает в выходной файл)
ИЛИ
sed -i 's/\(file\)\(.*\)\(\.foo\)/blang\2\3/' input.txt
(в -замена файла)