我想知道是否有人可以告诉我为什么这些 awk 不起作用,他们应该提供注册商和到期日期:
${AWK} -F: '/Registrar:/ && $0 != "" { getline; REGISTRAR=substr($0,2,17) } END { print REGISTRAR }'
和
awk '/Expiry date:/ { print $3 }'``
这是 whois 的打印输出:
Domain name:
kurtisbro.co.uk
Registrant:
kurtis brown
Registrant type:
UK Individual
Registrant's address:
23 Cambria Mews
NOTTINGHAM
NG3 4GZ
United Kingdom
Registrar:
Heart Internet Ltd t/a eXtend [Tag = EXTEND]
Relevant dates:
Registered on: 01-Mar-2012
Expiry date: 01-Mar-2014
Last updated: 23-Jun-2012
Registration status:
Registered until expiry date.
Name servers:
ns.mainnameserver.com
ns2.mainnameserver.com
WHOIS lookup made at 17:38:12 07-Aug-2012
--
This WHOIS information is provided for free by Nominet UK the central registry
for .uk domain names. This information and the .uk WHOIS are:
Copyright Nominet UK 1996 - 2012.
You may not access the .uk WHOIS or use any data from it except as permitted
by the terms of use available in full at http://www.nominet.org.uk/whois, which
includes restrictions on: (A) use of the data for advertising, or its
repackaging, recompilation, redistribution or reuse (B) obscuring, removing
or hiding any or all of this notice and (C) exceeding query rate or volume
limits. The data is provided on an 'as-is' basis and may lag behind the
register. Access may be withdrawn or restricted at any time.
答案1
for DOMAIN in newcastle.co.uk guinness.co.uk ;do
echo "";
echo $DOMAIN;
whois $DOMAIN | awk -F: '/Registrar:/ && $0 != "" { getline; REGISTRAR=$0 } END { print REGISTRAR }';
whois $DOMAIN | awk -F: '/Expiry date:/ && $0 != "" { EXPDATE=$0 } END { print EXPDATE }';
done
输出:
newcastle.co.uk
Corporation Service Company (UK) Limited [标签 = CSC-CORP-DOMAINS]
到期日期:2014 年 3 月 30 日guinness.co.uk
Melbourne IT t/a Internet Names Worldwide [标签 = MELBOURNE-IT]
到期日期:2014 年 1 月 6 日
答案2
以下示例使用自定义记录分隔符提取两个项目。它们都处理Registrar:
记录中的多行。
awk -vRS="(\n *Registrar:\n)|(\n +Expiry date: +)" \
'NR==2{ $0=gensub( /(^|\n) +/, "\\1","g" ) # gensub requires GNU awk
match($0,/\n\n/); print substr($0,1,RSTART-1) }
NR==3{ match($0,/\n/); print substr($0,1,RSTART-1) }'
或者
awk -vRS="\n\n" '
$1 == "Registrar:" {
gsub( /(^|\n) +/, "\n" ) # remove leading spaces
sub( /Registrar:\n/, "" ) # remove "Registrar:" header line
print
}
$1" "$2 == "Relevant dates:" {
match( $0, /Expiry date: +/ ); beg=RSTART+RLENGTH
match( $0, /Expiry date: +[^\n]+/ )
print substr( $0, beg , RSTART+RLENGTH-beg )
}'
输出
Heart Internet Ltd t/a eXtend [Tag = EXTEND]
01-Mar-2014