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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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‘d peering         ##删除1-806行
head peering                      ##检查
grep -nA8 ‘22616‘ peering    ##发现最后一行是5161
sed -i ‘5162,$‘d peering        ##删除5161后的行
tail peering                      ##检查


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

    <div class="row item">
      <div class="col-xs-5 col-sm-5 col-md-5">
        <div class="peer" data-sort-value="4 less communications, inc." data-filter-value="4 Less Communications, Inc.">
          <a href="/net/5985">4 Less Communications, Inc.</a>
        </div>
        <div class="asn" data-sort-value="16912" data-filter-value="16912">16912</div>
      </div>
      <div class="col-xs-4 col-sm-4 col-md-4">
        <div class="ip4" data-filter-value="206.72.210.229">206.72.210.229</div>
        <div class="ip6" data-filter-value="None">None</div>
      </div>
      <div class="col-xs-3 col-sm-3 col-md-3">
        <div class="speed" data-sort-value="1000" data-filter-value="1G">1G</div>
        <div class="policy" data-filter-value="Open">Open</div>
      </div>
    </div>

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


4、提取关键词信息

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

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


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

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

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

#/usr/bin/env python
def newlist(arg):
    file=open(arg,‘r‘)
    arglist=[]
    for eachline in file:
        eachline=eachline.replace("\n","")
        arglist.append(eachline)
    return arglist
    file.close()

if __name__==‘__main__‘:
    peer=newlist(‘peer‘)
    asn=newlist(‘asn‘)
    ip=newlist(‘ip‘)
    speed=newlist(‘speed‘)
    policy=newlist(‘policy‘)

    for i in range(len(name)):
        print(peer[i]+‘ ‘+asn[i]+‘ ‘+ip[i]+‘ ‘+speed[i]+‘ ‘+policy[i])

▎处理结果样例:

技术分享

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


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


本文出自 “乱码时代” 博客,请务必保留此出处http://juispan.blog.51cto.com/943137/1945059

以上是关于[CentOS 7系列]grep/sed/awk实战的主要内容,如果未能解决你的问题,请参考以下文章

find、grep、sed、awk的使用

grep,sed,awk工具的使用

Shell脚本 正则表达式 grep sed awk 工具

3. linux常用命令及三剑客 grep sed awk 用法

linux三剑客的基本使用——grep、sed、awk

Linux bash 文本处理命令awk,sed,grep 用法