免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: oneouts
打印 上一主题 下一主题

[文本处理] 这样的文本如何提取?? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-07-27 14:36 |只看该作者
回复 9# oneouts

国家
  1.     personball@vostro:~$echo '<a title="Indonesian proxy list elite">china<span'|grep -oP "(?<=elite\">)\w+"
  2. china
  3. personball@vostro:~$
复制代码

论坛徽章:
0
12 [报告]
发表于 2012-07-27 14:36 |只看该作者
这个title会变化么?如果后面的china变了的话。
不会变


其实我想用RS把这些文本先分段,然后在每个段中找数据,把他们在放一块

论坛徽章:
0
13 [报告]
发表于 2012-07-27 14:40 |只看该作者
如何把这些数据放在一行输出呢???
类似这样
111.111.111.111      80    china

论坛徽章:
0
14 [报告]
发表于 2012-07-27 14:41 |只看该作者
回复 12# oneouts
  1. personball@vostro:SHELL$./1.sh txt
  2. 110.139.99.207 8080 china
  3. personball@vostro:SHELL$cat 1.sh
  4. #!/bin/bash
  5. ip=`grep -oP "\d+.\d+.\d+.\d+" $1`
  6. port=`grep -oP "(?<=port )\d+" $1`
  7. contry=`grep -oP "(?<=elite\">)\w+" $1`
  8. echo $ip" "$port" "$contry
  9. personball@vostro:SHELL$
复制代码

论坛徽章:
0
15 [报告]
发表于 2012-07-27 14:42 |只看该作者
本帖最后由 personball 于 2012-07-27 14:46 编辑

回复 12# oneouts


    不要太钻牛角尖。。。


提取国家这行,改成下面这种,严格点
  1. personball@vostro:SHELL$echo '<a title="Indonesian proxy list elite">china<span s'|grep -oP "(?<=elite\">)[^<]*"
  2. china
  3. personball@vostro:SHELL$
复制代码

论坛徽章:
0
16 [报告]
发表于 2012-07-27 15:27 |只看该作者
谢谢猫兄
还有个疑问
就是如何打出位于匹配文字之间的内容
olor:#666666; font-size:10px;"> - Bontang</span></a> | grep -oP "\w+(?</span></a>)

我想打出bontang
可是打出 Bontang</span></a>?
还有awk 有没有类似的功能

论坛徽章:
0
17 [报告]
发表于 2012-07-27 15:37 |只看该作者
本帖最后由 personball 于 2012-07-27 15:42 编辑

回复 16# oneouts
  1.     personball@vostro:mysql$echo 'olor:#666666; font-size:10px;"> - Bontang</span></a>'|grep -oP "(?<= - )[^<]*"
  2. Bontang
  3. personball@vostro:mysql$
复制代码
一定要用awk,肯定也可以的
只是个人觉得awk不适合这种场合

补充个另一种零宽断言
  1. personball@vostro:mysql$echo 'olor:#666666; font-size:10px;"> - Bontang</span></a>'|grep -oP "[^>]*(?=</span></a>)"
  2. - Bontang
  3. personball@vostro:mysql$
复制代码

论坛徽章:
0
18 [报告]
发表于 2012-07-27 16:14 |只看该作者
grep -oP "[^>]*(?=</span></a>)
请问这个正则是什么意思啊??
"[^>]是以>开头对吧
*是匹配任意一个字符
?是匹配一次or 0次字符在这里可以不写吗?



论坛徽章:
0
19 [报告]
发表于 2012-07-27 16:24 |只看该作者
原来是
零宽断言
我看了
负向零宽断言
嘿嘿
谢谢了
开来
需要买本书好好学学正则了

论坛徽章:
0
20 [报告]
发表于 2012-07-27 16:25 |只看该作者
回复 19# oneouts


    "[^>]是以>开头对吧

这个。。。
[^>] 表示  非>字符
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP