Мне нужно выполнить поиск whois в файле, содержащем IP-адреса, и вывести как код страны, так и IP-адрес в новый файл. В моей команде до сих пор я нахожу IP-адреса и получаю уникальную копию, которая не соответствует допустимым диапазонам. Затем я запускаю поиск whois, чтобы узнать, кто такие иностранные адреса. Наконец, он вытаскивает код страны. Это отлично работает, но я не могу заставить его показать мне IP вместе с кодом страны, поскольку он не включен в выход whois.Выравнивание результатов конвейера вместе с вводом (здесь, «ip» и результаты whois grep)
Что было бы лучшим способом включить IP-адрес в выходной файл?
awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); ip = substr($0,RSTART,RLENGTH); print ip}' myInputFile \
| sort \
| uniq \
| grep -v '66.33\|66.128\|75.102\|216.106\|66.6' \
| awk -F: '{ print "whois " $1 }' \
| bash \
| grep 'country:' \
>> myOutputFile
Я думал об использовании тройника, но у меня возникают проблемы выстраиваются данные таким образом, что имеет смысл. Выходной файл должен иметь как IP-адрес, так и код страны. Неважно, являются ли они одиночным или двойным столбцом.
Ниже приведен пример ввода:
27 4:03:30 smtpfive декабрю Sendmail [14851]: tBRA3HAx014842: с =, задержка = 00: 00: 12, xdelay = 00: 00: 01, mailer = esmtp, pri = 1681345, relay = redcondor.itctel.c om. [75.102.160.236], dsn = 4.3.0, stat = Отложенное: 451 Превышен предел для этого пользователя nder 27 дек. 04:03:30 smtpfive sendmail [14851]: tBRA3HAx014842: to =, delay = 00: 00: 12, xdelay = 00: 00: 01, mailer = esmtp, pri = 1681345, relay = redcondor.itctel.c om. [75.102.160.236], DSN = 4,3,0, стат = Отложено: 451 предел получателя превышена для этого се NDER
Спасибо.
'awk | сортировать | uniq | grep | awk | Баш | grep' звучит немного чрезмерно. Возможно, вы можете предоставить образец 'myInputFile' вместе с желаемым результатом, чтобы мы могли предложить лучший подход. – fedorqui
FYI, более эффективно помещать '> any' после' done', а не повторно открывать файл каждый раз, когда вы хотите запустить команду 'whois'. –
Кроме того, я полностью согласен с @fedorqui - я не могу придумать обстоятельства, при которых ваш трубопровод не может быть сбит до двух элементов и не более.(Имейте в виду, что 'awk' может выполнять сортировку и uniq'ing, а grepping - инвертировать или иначе) –