Linux实验一--正则表达式应用

Linux实验一–正则表达式应用

1、从网页下载html文件

wget http://www.86pm25.com/city/beijing.html

2、用vim指令查看html文件,检验是否下载成功

vim beijing.html

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BGbXhKb1-1616732679099)(C:\Users\yinzh\AppData\Roaming\Typora\typora-user-images\image-20210324002345858.png)]

3、分割景区名称

要得到每个景区的名字需要在后面加入换行符,此步将转换为\n

cat beijing.html |sed -e 's#<tr><td>#<tr><td>\n#g'

4、分割日期

在“更新”和日期之间是“冒号”而不是空格,所以需要把冒号变成空格以方便后续的操作

cat beijing.html | sed -e 's#<tr><td>#<tr><td>\n#g' -e 's/更新:/更新 /g'

5、用空格将<>内的内容全部替换

在<>内的内容多为html的语句,没有实际意义,删除后对于结果也没有影响,因此将其全部替换为空格

cat beijing.html |sed -e 's#<tr><td>#<tr><td>\n#g' -e 's/更新:/更新 /g' -e 's/<[^<>]*>/ /g'

6、编写awk文件

利用awk指令来指定输出文件的格式

vim flow.awk

/更新/{
        date=$2;
        time=$3;
}
/m³/{
        printf("%s %s,%s,%s\n",date,time,$1,$3);
}

7、使用awk命令按格式输出并保存在record文件中

cat beijing.html | sed -e 's#<tr><td>#<tr><td>\n#g' -e 's/更新:/更新 /g' -e 's/<[^<>]*>/ /g' | awk -f flow.awk >> record

record文件内容如下:

2021年03月24日 17时,奥体中心,48μg/m³
2021年03月24日 17时,昌平镇,35μg/m³
2021年03月24日 17时,大兴旧宫,39μg/m³
2021年03月24日 17时,定陵(对照点),36μg/m³
2021年03月24日 17时,东四,31μg/m³
2021年03月24日 17时,房山燕山,61μg/m³
2021年03月24日 17时,丰台小屯,46μg/m³
2021年03月24日 17时,丰台云岗,44μg/m³
2021年03月24日 17时,古城,52μg/m³
2021年03月24日 17时,官园,40μg/m³
2021年03月24日 17时,海淀万柳,41μg/m³
2021年03月24日 17时,怀柔新城,22μg/m³
2021年03月24日 17时,怀柔镇,13μg/m³
2021年03月24日 17时,门头沟三家店,43μg/m³
2021年03月24日 17时,密云镇,20μg/m³
2021年03月24日 17时,农展馆,40μg/m³
2021年03月24日 17时,平谷新城,27μg/m³
2021年03月24日 17时,顺义新城,29μg/m³
2021年03月24日 17时,天坛,39μg/m³
2021年03月24日 17时,通州东关,39μg/m³
2021年03月24日 17时,万寿西宫,44μg/m³
2021年03月24日 17时,延庆石河营,9μg/m³
2021年03月24日 17时,延庆夏都,10μg/m³

8、根据格式要求进一步细化内容

取消pm2.5浓度的单位

cat beijing.html |sed -e 's#<tr><td>#<tr><td>\n#g' -e 's/更新:/更新 /g' -e 's/<[^<>]*>/ /g' | awk -f flow.awk | sed -e 's#μg/m³##g' >> record

2021年03月24日 17时,奥体中心,48
2021年03月24日 17时,昌平镇,35
2021年03月24日 17时,大兴旧宫,39
2021年03月24日 17时,定陵(对照点),36
2021年03月24日 17时,东四,31
2021年03月24日 17时,房山燕山,61
2021年03月24日 17时,丰台小屯,46
2021年03月24日 17时,丰台云岗,44
2021年03月24日 17时,古城,52
2021年03月24日 17时,官园,40
2021年03月24日 17时,海淀万柳,41
2021年03月24日 17时,怀柔新城,22
2021年03月24日 17时,怀柔镇,13
2021年03月24日 17时,门头沟三家店,43
2021年03月24日 17时,密云镇,20
2021年03月24日 17时,农展馆,40
2021年03月24日 17时,平谷新城,27
2021年03月24日 17时,顺义新城,29
2021年03月24日 17时,天坛,39
2021年03月24日 17时,通州东关,39
2021年03月24日 17时,万寿西宫,44
2021年03月24日 17时,延庆石河营,9
2021年03月24日 17时,延庆夏都,10

更改日期格式

cat beijing.html |sed -e 's#<tr><td>#<tr><td>\n#g' -e 's/更新:/更新 /g' -e 's/<[^<>]*>/ /g' | awk -f flow.awk | sed -e 's#μg/m³##g' | sed -e 's#\([0-9][0-9][0-9][0-9]\)年\([0-9][0-9]\)月\([0-9][0-9]\)日 \([0-9][0-9]\)时#\1-\2-\3 \4:00:00##g' >>record

2021-03-24 17:00:00,奥体中心,48
2021-03-24 17:00:00,昌平镇,35
2021-03-24 17:00:00,大兴旧宫,39
2021-03-24 17:00:00,定陵(对照点),36
2021-03-24 17:00:00,东四,31
2021-03-24 17:00:00,房山燕山,61
2021-03-24 17:00:00,丰台小屯,46
2021-03-24 17:00:00,丰台云岗,44
2021-03-24 17:00:00,古城,52
2021-03-24 17:00:00,官园,40
2021-03-24 17:00:00,海淀万柳,41
2021-03-24 17:00:00,怀柔新城,22
2021-03-24 17:00:00,怀柔镇,13
2021-03-24 17:00:00,门头沟三家店,43
2021-03-24 17:00:00,密云镇,20
2021-03-24 17:00:00,农展馆,40
2021-03-24 17:00:00,平谷新城,27
2021-03-24 17:00:00,顺义新城,29
2021-03-24 17:00:00,天坛,39
2021-03-24 17:00:00,通州东关,39
2021-03-24 17:00:00,万寿西宫,44
2021-03-24 17:00:00,延庆石河营,9
2021-03-24 17:00:00,延庆夏都,10
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值