免费注册 查看新帖 |

Chinaunix

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

[文本处理] sed can not match use () [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-18 16:39 |只看该作者 |倒序浏览
本帖最后由 u2001 于 2013-03-18 16:44 编辑

I want to find a field's (called formhash) value from html text , I use the following code , it prints the whole line.  why?
I guess it is due to  encode type or the length of one line, please give some help!
  1. sed -e 's/.*formhash" value="\([^"]*\)".*/\1/g'
复制代码

http.gz

12.02 KB, 下载次数: 8

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
2 [报告]
发表于 2013-03-18 17:03 |只看该作者
本帖最后由 yestreenstars 于 2013-03-18 17:26 编辑

I guess you need this.
  1. sed -n 's/.*formhash" value="\([^"]*\)".*/\1/p'
复制代码
The "-n" parameter can show you the match lines only,but it must work in with "p".

论坛徽章:
0
3 [报告]
发表于 2013-03-18 20:03 |只看该作者
回复 2# yestreenstars

刚才没有中文输入法,我的意思是我只需要那个value值,可是出来的确是整个行,你可以把我的文件下载下去,然后试一下
我的那个表达式应该没有问题,因为处理较短数据还是可以的,我怀疑是不是行太长了或者编码有问题?

   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
4 [报告]
发表于 2013-03-18 20:07 |只看该作者
@u2001
早说啊,打英文打得我累死了,而且还出现各种语法错误,哈哈~
你有没有试过我给你的那个命令?你的那个命令只实现了替换功能,所以所有行都会被打印出来。

论坛徽章:
0
5 [报告]
发表于 2013-03-18 20:15 |只看该作者
回复 4# yestreenstars
试了,跟我的一样啊,出来的也是整行,我那个命令不是替换呀,那个圆括号是提取,测试其他的文本没问题呀

   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
6 [报告]
发表于 2013-03-18 20:27 |只看该作者
你得到的结果是这样吗?
  1. [root@localhost ~]# sed -n 's/.*formhash" value="\([^"]*\)".*/\1/p' k
  2. 57e24614
  3. [root@localhost ~]#
复制代码

论坛徽章:
0
7 [报告]
发表于 2013-03-18 20:38 |只看该作者
回复 6# yestreenstars

test@test-A8Sg:~$ sed -n 's/.*formhash" value="\([^"]*\)".*/\1/p' http | wc -w
2617
test@test-A8Sg:~$ cat http | wc -w
2741

我出来的内容还是很多,但是少了一些词,貌似就说那几个匹配的少了,我怀疑跟编码有关,我在公司的电脑Centos 64bit和我的
32bit的ubuntu都是这种情况
   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
8 [报告]
发表于 2013-03-18 20:44 |只看该作者
回复 7# u2001


    那就不清楚了,我这里只出来一行,用Windows的记事本查找时也只查到一处匹配的。

论坛徽章:
0
9 [报告]
发表于 2013-03-18 20:51 |只看该作者
回复 8# yestreenstars

我估计你是换行了,linux下只显示一行,换行之后再处理就没问题了

test@test-A8Sg:~$ wc -l http
1 http


   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
10 [报告]
发表于 2013-03-18 20:55 |只看该作者
没换行:
  1. [root@localhost ~]# wc -l k
  2. 795 k
  3. [root@localhost ~]#
复制代码
注:我这里的k就是你的http。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP