免费注册 查看新帖 |

Chinaunix

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

[文本处理] 根据关键字定位到某一段文本行的方法.... [复制链接]

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
11 [报告]
发表于 2015-05-11 14:16 |只看该作者
本帖最后由 jason680 于 2015-05-11 14:18 编辑

回复 9# yelang5460

>>求指教,awk '/aaaa/{action}' 这种用法很常见,你的这种/   /   /   /简直理解不能,能抽空解释一下么?

the special character "/" need to a translation "\/"
awk '/\/>/{action}'     

论坛徽章:
0
12 [报告]
发表于 2015-05-11 14:30 |只看该作者
回复 10# songyc_2015
对  

是这样的

文件里可能有很多行带有关键字的

多谢

   

论坛徽章:
0
13 [报告]
发表于 2015-05-11 14:40 |只看该作者
回复 11# jason680


'/\/>/{if(app*dc){gsub(/"/,"",s);print s;exit};app=dc=""}              /<appwidget/{app=1}            /[dD]igitalclock/{dc=1}    app*dc

&&

/screen/{s=$2;getline;s=s" "$2;getline;s=s" "$2}'


这里的第一行前面这一段还可以理解成/ /{action}   加   / /{action}  加   / /{action}   
第三行也可以理解成一个  / /{action}  
但是第一行最后的这个  app*dc 我就不明白应该理解成是属于哪里的语法片断了......

基础很薄弱,多谢释疑...

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
14 [报告]
发表于 2015-05-11 15:04 |只看该作者
回复 13# yelang5460

awk初学之常见问题
http://bbs.chinaunix.net/thread-2309494-1-1.html

论坛徽章:
0
15
发表于 2015-05-11 15:10
回复 14# jason680


    多谢。

原来就是个1.......

论坛徽章:
0
16 [报告]
发表于 2015-05-11 15:11 |只看该作者
本帖最后由 yelang5460 于 2015-05-11 15:12 编辑

回复 12# yelang5460


论坛徽章:
0
17 [报告]
发表于 2015-05-11 15:12 |只看该作者
回复 7# songyc_2015


        这个 加了:q之后 数组成全空值的了  .....

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
18 [报告]
发表于 2015-05-11 16:49 |只看该作者
本帖最后由 songyc_2015 于 2015-05-11 16:49 编辑

回复 17# yelang5460

哦,原因是你匹配的数据不是第1个appwidget的段落就匹配了,所以数组就为空了,改成下面的命令试试:
array=(`sed -nr '/appwidget/{:a;N;/\/>/!ba;s#.*[Dd]igitalclock.*:screen="([^"]+)".*:x="([^"]+)".*:y="([^"]+)".*#\1 \2 \3#p;tb;b;:b;q;}' file`)

论坛徽章:
0
19 [报告]
发表于 2015-05-11 17:02 |只看该作者
回复 18# songyc_2015


可以了 呵呵  赞一个


这个只显示3个数值 如果我也要这一段里面最后面 两个值 4 和 1   应该怎么改呢?
<appwidget
        launcher:packageName="com.sec.android.widgetapp.digitalclock"
        launcher:className="com.sec.android.widgetapp.digitalclock.DigitalClockWidgetProvider"
        launcher:screen="1"
        launcher="0"
        launcher:y="0"
        launcher:spanX="4"
        launcher:spanY="1" />  

我改成这样 array=(`sed -nr '/appwidget/{:a;N;/\/>/!ba;s#.*[Dd]igitalclock.*:screen="([^"]+)".*="([^"]+)".*:y="([^"]+)".*:spanX="([^"]+)".*:spanY="([^"]+)".*#\1 \2 \3 \4 \5#p;tb;b;:b;q;}' file`)
哈哈 就可以了.....

你太赞了....

论坛徽章:
0
20 [报告]
发表于 2015-05-11 17:38 |只看该作者
回复 14# jason680

你的这个也是只显示3个数值 如果我也要这一段里面最后面 两个值 4 和 1   应该怎么改呢?
<appwidget
        launcher:packageName="com.sec.android.widgetapp.digitalclock"
        launcher:className="com.sec.android.widgetapp.digitalclock.DigitalClockWidgetProvider"
        launcher:screen="1"
        launcher="0"
        launcher:y="0"
        launcher:spanX="4"
        launcher:spanY="1" />  

你这个我真不会改......
     array=(`awk -F= '/\/>/{if(app*dc){gsub(/"/,"",s);print s;exit};app=dc=""}/<appwidget/{app=1}/[dD]igitalclock/{dc=1}app*dc&&/screen/{s=$2;getline;s=s" "$2;getline;s=s" "$2 ;getline;s=s" "$2;getline;s=s" "$2 }' FILE`)

改成这样 结果只显示了两个排序靠前的"com.android.ccc******”了,求指点......
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP