2012-11-05 87 views
2

我是新來的bash腳本,並試圖從whois結果中解析出信息,特別是orgname和city字段。 將結果保存在字符串中然後解析字符串以獲取相關信息的正確方法是?如:解析bash命令的結果

RESULT=whois <ip> 
    # parse RESULT 

任何幫助將不勝感激。

+0

要記錄結果:'RESULT = $(WHOIS查詢)'你給試圖運行語法命令「」,RESULT的值設置爲環境中的「whois」。 –

+1

甚至可以在使用'RESULT = $(whois | awk'/ OrgName/{print $ 0}/City/{print $ 0}')'錄製之前開始解析,它只會在您的變量中存儲所需的信息。 –

+0

或者甚至添加'awk -F:'/ OrgName/{print $ 2}'等等,假設whois信息在任何地方都以相同的方式格式化。注:我只是嘗試了一個既沒有OrgName也沒有City字段的主機,所以你不會總是能夠獲得這些信息。 – amaurea

回答

3

可悲的是,whois輸出似乎意味着人類,而不是機器,閱讀。它的格式取決於你有興趣在這根域。例如,whois uio.no收益類的東西

NORID Handle...............: UIO2O-NORID 
Type.......................: organization 
Name.......................: UNIVERSITETET I OSLO 
Id Type....................: organization_number 
Id Number..................: 971035854 
Registrar Handle...........: REG2-NORID 
Post Address...............: Postboks 1059, Blindern 

whois tasvideos.org產生

Registrant ID:ACTR120531657 
Registrant Name:Andres Delikat 
Registrant Organization:tasvideos.org 
Registrant Street1:5505G Creek Ridge Ln 
Registrant Street2: 
Registrant Street3: 
Registrant City:Raleigh 

這只是表明,解析這個東西將取決於你我正在看,而且我提供的解決方案在任何情況下都不起作用。但提取這些信息最簡單的方法是調用awk並保持其輸出。對於「org」的情況下,這大概會是你的人,這將是這樣的:

info=$(whois $ip) 
org=$(echo "$info" | awk -F : '$1=="Registrant Organization"{print $2}') 
city=$(echo "$info" | awk -F : '$1=="Registrant City"{print $2}') 
+0

感謝您提供非常有用的信息! – user1190650

+0

如果這解決了您的問題,請記住將問題標記爲已回答。 – amaurea