免费注册 查看新帖 |

Chinaunix

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

[文本处理] 提取符合内容的词 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-02-02 22:31 |只看该作者 |倒序浏览
test文件如下:
The following packages have unmet dependencies:
libqt4-core : Depends: libqt4-dbus (= 4:4.8.2+dfsg-10) but 4:4.8.2+dfsg-2 is to be installed
               Depends: libqt4-network (= 4:4.8.2+dfsg-10) but 4:4.8.2+dfsg-2 is to be installed
               Depends: libqt4-script (= 4:4.8.2+dfsg-10) but it is not going to be installed
               Depends: libqt4-test (= 4:4.8.2+dfsg-10) but it is not going to be installed
               Depends: libqt4-xml (= 4:4.8.2+dfsg-10) but 4:4.8.2+dfsg-2 is to be installed
               Depends: libqtcore4 (= 4:4.8.2+dfsg-10) but 4:4.8.2+dfsg-2 is to be installed
libqt4-gui : Depends: libqt4-designer (= 4:4.8.2+dfsg-10) but it is not going to be installed
              Depends: libqt4-opengl (= 4:4.8.2+dfsg-10) but 4:4.8.2+dfsg-2 is to be installed
              Depends: libqt4-svg (= 4:4.8.2+dfsg-10) but it is not going to be installed
              Depends: libqtgui4 (= 4:4.8.2+dfsg-10) but 4:4.8.2+dfsg-2 is to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

我要提取每行s:  到  ( 之间的所有词,比如:libqt4-dbus  等等。
请问如何写shell?

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
2 [报告]
发表于 2013-02-02 22:43 |只看该作者
回复 1# luofeiyu_cu
  1. grep -Po '(?<=s: )[^\(]+(?=\()' file
  2. libqt4-dbus
  3. libqt4-network
  4. libqt4-script
  5. libqt4-test
  6. libqt4-xml
  7. libqtcore4
  8. libqt4-designer
  9. libqt4-opengl
  10. libqt4-svg
  11. libqtgui4
复制代码

论坛徽章:
0
3 [报告]
发表于 2013-02-02 22:49 |只看该作者
回复 2# yinyuemi


    顶楼上,喜欢的awk用不了零宽,Python必须指定长度。

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
4 [报告]
发表于 2013-02-02 22:57 |只看该作者
回复 3# tyw09


    awk也可以很cool
awk -F's: |\\(' 'NF==3{print $2}'

论坛徽章:
7
数据库技术版块每日发帖之星
日期:2015-08-08 06:20:00数据库技术版块每日发帖之星
日期:2015-08-29 06:20:00数据库技术版块每日发帖之星
日期:2015-08-29 06:20:00数据库技术版块每日发帖之星
日期:2015-09-18 06:20:00数据库技术版块每周发帖之星
日期:2015-11-06 19:56:51数据库技术版块每日发帖之星
日期:2016-01-22 06:20:00数据库技术版块每日发帖之星
日期:2016-02-05 06:20:00
5 [报告]
发表于 2013-02-02 23:01 |只看该作者
本帖最后由 asdf2110 于 2013-02-02 23:01 编辑
  1. grep Depends file | sed -r 's/.*s: (.*) \(.*/\1/g
复制代码

论坛徽章:
0
6 [报告]
发表于 2013-02-02 23:27 |只看该作者
回复 4# yinyuemi

哈,谢谢,收藏了
   

论坛徽章:
0
7 [报告]
发表于 2013-02-03 08:49 |只看该作者
问题1:
grep -Po '(?<=s: )[^\(]+(?=\()'  test
得到正确结果,-P 表示使用perl方式的正则表达式  o  only  match
(?<=s: )[^\(]+(?=\()  #请详细解释一下这个式子
问题2:
awk -F's: |\\(' 'NF==3{print $2}'   #没有写完全吧,请写完整
问题3:
grep test | sed -r 's/.*s: (.*) \(.*/\1/g  #无法运行
sed -r 's/.*s: (.*) \(.*/\1/g'  test
The following packages have unmet dependencies:
libqt4-dbus
libqt4-network
libqt4-script
libqt4-test
libqt4-xml
libqtcore4
libqt4-designer
libqt4-opengl
libqt4-svg
libqtgui4
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
sed的方法还需要修改。

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
8 [报告]
发表于 2013-02-03 09:52 |只看该作者
回复 7# luofeiyu_cu

(?<=s: )[^\(]+(?=\()  #请详细解释一下这个式子

(?<=s: )和(?=\()相当于创建两个标记s: (,告诉正则引擎,放在他们中间的表达式必须前有s: 后有(才算匹配。
[^\(]+  这个表达式匹配的是非( 的连续字符。
   

论坛徽章:
0
9 [报告]
发表于 2013-02-03 10:07 |只看该作者
sed 's/.*Depends: \([^ ]*\).*/\1/' test
这个表达式也可以,但是我不理解,
/.*Depends: \([^ ]*\).*/  这个正则的/.*Depends:  我理解,\([^ ]*\)  这个是分组吧, \([^ ]*\).*/ 联合在一起我就不理解了。

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
10 [报告]
发表于 2013-02-03 10:27 |只看该作者
回复 9# luofeiyu_cu

\(    \)可理解为捕获

s/aaa\(bb\)/\1/ 就是匹配aaabb,将匹配到的aaabb替换为捕获到的bb。\1是对获取的引用。如果有多个获取按左到右,依次用\1 \2..
表示
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP