Linux ——正则表达式过滤(以北京监测网站为例)
Linux ——正则表达式过滤(以北京监测网站为例)
一、实验内容
从因特网上搜索Web页,用wget获取网页,处理网页html文本数据,从中提取出当前时间点北京各监测站的PM2.5浓度,输出如下CSV格式数据:
2020-03-09 13:00:00,海淀区万柳,73
2020-03-09 13:00:00,昌平镇,67
2020-03-09 13:00:00,奥体中心,66
2020-03-09 13:00:00,海淀区万柳,73
2020-03-09 13:00:00,昌平镇,73
2020-03-09 13:00:00,奥体中心,75
二、实验步骤
1、通过“wget”命令,获取网页内容。
查看所获得的beijing.html文件的内容,如下所示:
2、对得到的html文件进行编辑。
由于网站的内容都是用标签作为前后缀,所以可以使用sed命令将标签<>替换为空格。
编辑之后得到的文件信息如下所示,可见这一步已提取出所有以汉字和数字来描述的关键信息。
3、由于每行前面没有诸如“2020-03-09 13:00:00”的日期和时间,所以使用awk命令提取更新时间。
编写awk文件如下:
该操作之后得到如下结果,说明日期已经被提取出来了!
4、下面提取各个检测点的名字和PM2.5的指数等信息。观察发现,每一行都有共同的“ μg”和“m3”。于是考虑用这两个中的一个来提取它们所在的行。
修改awk文件如下:
如果用“m”来提取的话,会出现如下内容,多出来了一条无用的信息,因为这一行也含有“m”。这是我们不想看到的情况。
所以,选择用“g”来提取试试。如下图所示,没有多余的行,因此用“g”最为合适。