我需要對包含IP地址的文件執行whois查找,並將國家代碼和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地址和國家代碼。不管它們是單列還是雙列。
下面是一些示例輸入:
年12月27四點03分30秒的sendmail smtpfive [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 = Deferred:451本次超過收件人限制 nder Dec 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,STAT =遞延:451收件人極限超過此瑟 的nDer
感謝。
'awk |排序| uniq | grep | awk | bash | grep'聽起來有點過分。也許你可以提供一個樣例'myInputFile'和期望的輸出,所以我們可以提出一個更好的方法。 – fedorqui
僅供參考,在'done'之後放置'> whatever'更有效,而不是每次要運行'whois'命令時重新打開該文件。 –
另外,我全心全意地同意@fedorqui - 我無法想象你的管道不能完全歸結爲兩個元素而不再是其他情況。(請記住'awk'可以做排序,統一和反轉或其他) –