免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 7687 | 回复: 22
打印 上一主题 下一主题

shell脚本与字符编码的问题(已解决) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-15 19:00 |只看该作者 |倒序浏览
本帖最后由 marksman201 于 2010-04-16 16:52 编辑

#!/bin/bash
wget  http://blog.chinaunix.net/u2/86590/index.php
awk '/countinfo/{getline;print}' index.php | sed 's/<.*>//g'

这个脚本得到的结果是:
·总访问量:17074

怎么把后面的17074得到呢?

注意,这里的总访问量:由于汉字编码的问题使得:
awk '/countinfo/{getline;print}' index.php | sed 's/<.*>//g' | sed 's/[^0-9]//g'
得到的结果也是:
·总访问量:17074

ps:后面的17074会改变

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2010-04-15 19:10 |只看该作者
根据正则的贪婪性,<.*>会把整行都干掉,你是怎么得到总访问量:17074的呢?奇怪

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
3 [报告]
发表于 2010-04-15 19:27 |只看该作者

  1. #!/bin/bash
  2. wget http://blog.chinaunix.net/u2/86590/index.php
  3. awk '/countinfo/{getline;print}' index.php | sed 's/.*[^0-9]\([0-9]\{1,\}\)<\/td><\/tr>/\1/g'
复制代码

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
4 [报告]
发表于 2010-04-15 21:07 |只看该作者
  1. curl -s http://blog.chinaunix.net/u2/86590/index.php | grep -Po  '(?<=访问量:)[0-9]+'
复制代码

论坛徽章:
0
5 [报告]
发表于 2010-04-16 08:48 |只看该作者
回复 2# Shell_HAT

因为.*在<>里面

论坛徽章:
0
6 [报告]
发表于 2010-04-16 08:53 |只看该作者
回复 3# Shell_HAT


  这个还是不好使啊

论坛徽章:
0
7 [报告]
发表于 2010-04-16 09:05 |只看该作者
回复 4# blackold

黑哥威武

不过,在debian上我的grep貌似不支持-P
debian:~# curl -s http://blog.chinaunix.net/u2/86590/index.php | grep -Po  '(?<=)[0-9]+'
grep: Support for the -P option is not compiled into this --disable-perl-regexp binary
debian:~# cat /etc/issue
Debian GNU/Linux lenny/sid \n \l

估计得重新编译grep,太麻烦

找了台suse服务器,一切ok
  # cat /etc/issue
Welcome to SUSE Linux Enterprise Server 10 SP2 (x86_64) - Kernel \r (\l).

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
8 [报告]
发表于 2010-04-16 09:09 |只看该作者
回复 7# marksman201


    sed总支持吧
  1. curl -s http://blog.chinaunix.net/u2/86590/index.php|sed '/访问量/!d;s/.*访问量:\([0-9]\+\).*/\1/'
复制代码

论坛徽章:
0
9 [报告]
发表于 2010-04-16 09:25 |只看该作者
sed -n '/countinfo/ {n;s/<[^<]*>//gp}' file

论坛徽章:
0
10 [报告]
发表于 2010-04-16 11:21 |只看该作者
回复 8# blackold

sed '/访问量/!d'
好像有点儿问题,不能得到有“总访问量”的那一行

不知道是不是编码的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP