簡體   English   中英

Bash使用whois提取名稱服務器(包括它們是否在新行中)

[英]Bash extracting name servers including if they are on new line, using whois

嗨,大家好,我試圖從網站中提取名稱服務器,但是如果服務器在換行符上,我似乎無法做到,例如,如果它是這樣的話,我可以這樣做。

nserver:      ns-a.somesite.com 176.195.2.100  
nserver:      ns-b.somesite.com 176.195.2.101

但是,如果是這樣,我就無法做到:

nserver:     
ns-a.somesite.com 176.195.2.100  
ns-b.somesite.com 176.195.2.101
ns-b.somesite.com 176.195.2.102

這是我到目前為止的內容:

whois ebay.com | grep -E "[Ss]ervers{0,1}:"

要僅獲取名稱服務器的名稱:

whois ebay.com | grep -E "Name Server" | tr -d ' ' | awk -F":" '{ print $1 }'

您可能必須根據輸出的內容來選擇grep搜索條件,但這應該可以讓您獲得99%的輸出效果。

僅供參考,這將用“ Name Server”刪除行,它將刪除行中的空格,然后將其用冒號分隔,並打印第二個元素,即名稱服務器。

更新

為更困難的示例添加:

whois sans.edu | tr -d ' ' | awk -F: '{ if ($1 == "NameServer" && length($2)>0) print $2 ;else if ($0 == "NameServers:") found=1; else if (found == 1 && length($0)>0) print $0; else found=0 }'

這個有點混亂。 刪除空格后使awk開心。 在awk中,我們執行以下操作:

  • 我們按冒號分開。
  • 如果$ 1等於“ NameServer”且長度$ 2> 0,則我們打印$ 2(例如ebay.com)
  • 否則,如果該行是“ NameServers:”(例如sans.edu),則我們將標志設置為found=1
  • 否則,如果設置了標志並且行的長度不為0,則打印該行
  • 否則將標志設置為0(假設我們找到了0個字符長的行)

暫無
暫無

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

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