[CentOS 7系列]grep/sed/awk实战

前端之家收集整理的这篇文章主要介绍了[CentOS 7系列]grep/sed/awk实战前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近准备和CoreSite - Any2 California接入商建立网络BGP邻居关系。从peeringdb (https://www.peeringdb.com/ix/142)上找到了所有接入商的信息,但是转移信息到本地不是很方便,需要进行多次文本调整,耗时较长。作为萌新,立马就想到近期学习的grep/sed/awk工具。于是就尝试处理数据。


1、下载页面内容

curl https://www.peeringdb.com/ix/142 > peering

页面内容存入peering文件


2、删除无用信息

翻看网页,发现第一个行需要的信息是“2degrees”,最后一行是“Zscaler AS22616”

grep-n'2degrees'peering##发现第一行是807
sed-i'1,806'dpeering##删除1-806行
headpeering##检查
grep-nA8'22616'peering##发现最后一行是5161
sed-i'5162,$'dpeering##删除5161后的行
tailpeering##检查


3、观察剩余内容提取关键词

<divclass="rowitem">
<divclass="col-xs-5col-sm-5col-md-5">
<divclass="peer"data-sort-value="4lesscommunications,inc."data-filter-value="4LessCommunications,Inc.">
<ahref="/net/5985">4LessCommunications,Inc.</a>
</div>
<divclass="asn"data-sort-value="16912"data-filter-value="16912">16912</div>
</div>
<divclass="col-xs-4col-sm-4col-md-4">
<divclass="ip4"data-filter-value="206.72.210.229">206.72.210.229</div>
<divclass="ip6"data-filter-value="None">None</div>
</div>
<divclass="col-xs-3col-sm-3col-md-3">
<divclass="speed"data-sort-value="1000"data-filter-value="1G">1G</div>
<divclass="policy"data-filter-value="Open">Open</div>
</div>
</div>

关键词分别为“peer”,“asn”,“ip4”,“speed”和“policy“”,这些也是我想要提取的信息。


4、提取关键词信息

egrep'">.*</a>'peering>peer1##提取peer名称导入peer文件
文本样例:<ahref="/net/5985">4LessCommunications,Inc.</a>
wc-lpeer1##查看行数,用于确认
sed-ir's#</a>##g'peer1##删除最后的"</a>"
awk-F'>''{print$2}'peer1>peer##提取peer名称
wc-lpeer##检查行数是否正确

用同样的方法提取asn,ip4,speed和policy信息。


5、使用python脚本组合文件内容

通过以上步骤,我得到了5个文本文件,分别装有我需要的信息,且经过行数对比,行数一致。

�利用python脚本提取并组合:

#/usr/bin/envpython
defnewlist(arg):
file=open(arg,'r')
arglist=[]
foreachlineinfile:
eachline=eachline.replace("\n","")
arglist.append(eachline)
returnarglist
file.close()

if__name__=='__main__':
peer=newlist('peer')
asn=newlist('asn')
ip=newlist('ip')
speed=newlist('speed')
policy=newlist('policy')

foriinrange(len(name)):
print(peer[i]+''+asn[i]+''+ip[i]+''+speed[i]+''+policy[i])

�处理结果样例:

wKioL1ld-Sji8wVpAADBe6SKUro917.png-wh_50

如果想更周到点,可以将内容输入到一个文本文件里。因为部分peer名称带空格,可将分隔符改为其他特殊符号(如#,*),存入TXT文档内,在导入EXCEL时,也方便分隔。


通过以上步骤,可以采集到所需要的信息。如果不会python,最后一步可将5个文件内容黏贴到excel表格进行处理,也能达到同样的效果

猜你在找的CentOS相关文章