Bash 如何解析和转换ip数据库?
我有这样的ip数据库(apnic):Bash 如何解析和转换ip数据库?,bash,awk,Bash,Awk,我有这样的ip数据库(apnic): inetnum: 218.75.100.64 - 218.75.100.67 netname: YONGKANG-SHIJI-NETBAR country: CN descr: Yongkang Shiji Internet Bar descr: NULL admin-c: XY203-AP tech-c: CJ54-AP status: ASSIGNED NON-P
inetnum: 218.75.100.64 - 218.75.100.67
netname: YONGKANG-SHIJI-NETBAR
country: CN
descr: Yongkang Shiji Internet Bar
descr: NULL
admin-c: XY203-AP
tech-c: CJ54-AP
status: ASSIGNED NON-PORTABLE
changed: auto-dbm@dcb.hz.zj.cn 20040610
mnt-by: MAINT-CN-CHINANET-ZJ-JH
source: APNIC
inetnum: 218.75.99.0 - 218.75.99.3
netname: WEISHENG-COLTD
country: CN
descr: Donggan Hospital
descr:
admin-c: DS1202-AP
tech-c: CJ54-AP
mnt-irt: IRT-CHINANET-ZJ
status: ASSIGNED NON-PORTABLE
changed: zjnoc_ip_5@163.com 20150510
mnt-by: MAINT-CN-CHINANET-ZJ-JH
source: APNIC
...
218.75.100.64;218.75.100.67;YONGKANG-SHIJI-NETBAR;CN;Yongkang Shiji Internet Bar;APNIC
218.75.99.0;218.75.99.3;WEISHENG-COLTD;CN;Donggan Hospital;APNIC
...
我需要转换为csv文件(仅ipstart-ipend-netname-country-descr1-source),如下所示:
inetnum: 218.75.100.64 - 218.75.100.67
netname: YONGKANG-SHIJI-NETBAR
country: CN
descr: Yongkang Shiji Internet Bar
descr: NULL
admin-c: XY203-AP
tech-c: CJ54-AP
status: ASSIGNED NON-PORTABLE
changed: auto-dbm@dcb.hz.zj.cn 20040610
mnt-by: MAINT-CN-CHINANET-ZJ-JH
source: APNIC
inetnum: 218.75.99.0 - 218.75.99.3
netname: WEISHENG-COLTD
country: CN
descr: Donggan Hospital
descr:
admin-c: DS1202-AP
tech-c: CJ54-AP
mnt-irt: IRT-CHINANET-ZJ
status: ASSIGNED NON-PORTABLE
changed: zjnoc_ip_5@163.com 20150510
mnt-by: MAINT-CN-CHINANET-ZJ-JH
source: APNIC
...
218.75.100.64;218.75.100.67;YONGKANG-SHIJI-NETBAR;CN;Yongkang Shiji Internet Bar;APNIC
218.75.99.0;218.75.99.3;WEISHENG-COLTD;CN;Donggan Hospital;APNIC
...
如何使用awk或bash实现这一点?使用awk,您可以做到:
awk -F ':[[:blank:]]*' '/inetnum:/{ip=$2; sub(/ +- +/, ";", ip)} /netname:/{nn=$2}
/country:/{ct=$2} ds=="" && /descr:/{ds=$2}
/source:/{print ip, nn, ct, ds, $2; ds=""}' OFS=";" file
输出:
218.75.100.64;218.75.100.67;YONGKANG-SHIJI-NETBAR;CN;Yongkang Shiji Internet Bar;APNIC
218.75.99.0;218.75.99.3;WEISHENG-COLTD;CN;Donggan Hospital;APNIC
这将忽略第二个
descr
字段。您打算忽略第二个descr
字段,还是将NULL
作为特例处理?忽略。我只需要先描述一下。谢谢。在一般情况下,解析whois
是一项永无止境的工作,因为不同的数据库使用不同的字段和不同的数据库格式,甚至在单个数据库中,某些字段的语义似乎随着时间的推移而发生了变化。