簡體   English   中英

使用 BASH 和 grep 將 whois 結果格式化為 CSV

[英]formatting whois results to CSV using BASH and grep

幾個小時以來,我一直在努力解決這個問題,並認為我會來這里尋求幫助。

我有一個日志文件中的 IP 地址的 CSV 文件,我想運行該文件並從中獲取 WHOIS 網絡范圍和公司名稱,然后將結果附加到 CSV 的末尾。

到目前為止,我設法做的是將 whois 結果發送到單獨的 csv

echo ip, company, > result.csv
for ip in $(grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" source.csv); do 
    whois $ip | grep -i -e 'netrange\|inetnum' -e 'org-name\|orgname' \
    | awk 'BEGIN{FS="NetRange:|inetnum:|OrgName:|org-name:"} {print $2","$3}'
    |xargs; done >> result.csv

我的挑戰是如何將我的 2 個新列添加回 source.csv? 我試過使用

paste -d, source.csv result.csv

但所有發生的事情是 result.csv 中的值覆蓋了 source.csv 的前幾列

我的 source.csv 看起來像下面這樣

ip address       requests   number of visits
66.249.90.77      2149      200
66.249.66.1       216       233   

我的結果.csv

ip range                     company
66.249.64.0 - 66.249.95.255 Google Inc.
66.249.64.0 - 66.249.95.255 Google Inc.

我希望我的最終 csv 看起來像

ip            requests  number of visits    ip range               company
66.249.90.77    2149    200           66.249.64.0 - 66.249.95.255   Google Inc.
66.249.66.1      2161   233           66.249.64.0 - 66.249.95.255   Google Inc.

如果可能的話,我更願意用 BASH 來完成這個而不是安裝任何 3rd 方工具等。我嘗試過 python 包 ipwhois 但我的 Python 知識遠遠少於我有限的 BASH 知識,所以我放棄了它,以免我繼續浪費時間!

任何幫助深表感謝。

嘗試將它放在一個腳本文件中,並在包含數據文件的目錄中運行它。

#!/bin/bash -ue

# Pattern for spacing characters
sp="[[:space:]]*"

#Pattern for non-spacing characters
nsp="[^[:space:]]+"

# Iterate on each line in the data file
while IFS= read -r line
do
  [[ "$line" =~ ^$sp($nsp)$sp($nsp)$sp($nsp)$sp$ ]] || continue
  f1="${BASH_REMATCH[1]}"
  f2="${BASH_REMATCH[2]}"
  f3="${BASH_REMATCH[3]}"
  # Extract information from whois
  whois_data="$(whois "$f1")"
  range="$(grep NetRange  <<<"$whois_data" | cut -f2 -d":")"
  company="$(grep OrgName <<<"$whois_data" | cut -f2 -d":")"
  echo $f1,$f2,$f3,$range,$company
done <"source.csv"

輸出格式為以逗號分隔的字段,在使用rangecompany變量之前應該對它們進行一些修剪(以刪除開頭和結尾的空格),但這應該給你一個想法。

基本上,代碼不會嘗試將兩個文件合並在一起,而是從源文件的每一行中提取字段,執行whois ,從中提取所需的兩個字段,然后將所有五個字段輸出到輸出中,無需中介步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM