免费注册 查看新帖 |

Chinaunix

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

[文本处理] 【已解决】求教,如何从文本中读取指定字段的值 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-03 12:08 |只看该作者 |倒序浏览
本帖最后由 wlzhuce 于 2012-12-03 13:52 编辑

      源文件:
   某文件中result.txt(存在多个类似如下的结果):

Cell 03 - Address: 6C:E8:73:37:56:88
                    Protocol:802.11b/g/n
                    ESSID:"TP-LINK_JZSNOWER"
                    Mode:Managed
                    Frequency:2.412 GHz (Channel 1)
                    Quality:100/100  Signal level:-43 dBm  Noise level:-92 dBm
                    Encryption key: on
                    Bit Rates:54 Mb/s
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown: DD0E0050F204104A0001101044000102
Cell 04 - Address: 14:E6:E4:E3:E8:68
                    Protocol:802.11b/g/n
                    ESSID:"Sunshine_Mercury"
                    Mode:Managed
                    Frequency:2.412 GHz (Channel 1)
                    Quality:68/100  Signal level:-63 dBm  Noise level:-92 dBm
                    Encryption key : on
                    Bit Rates:54 Mb/s
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK


需求:
现在需要按字段读取相应的值,比如读取Signal level,得到-63 dBm,其他字段类似。

我目前的方法是:“cat /etc/iwlist|grep "Protocol: "|sed -e 's/ //g'”,一行一个字段可以处理,但是对于同行多个字段则无法处理,求高手指点。。。多谢。

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2012-12-03 12:29 |只看该作者
Quality:68/100  Signal level:-63 dBm  Noise level:-92 dBm

这个可以有N多种断句儿方法
比如
Quality=68/100
Quality=68/100  Signal
"68/100  Signal level"=-63

论坛徽章:
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
3 [报告]
发表于 2012-12-03 13:43 |只看该作者
本帖最后由 jason680 于 2012-12-03 13:43 编辑

回复 1# wlzhuce

How about this one

$ cat /etc/iwlist | sed -e 's/Noise\|Signal/\n&/g' | grep "Signal level:" | sed 's/ //g'
Signallevel:-63dBm
   

论坛徽章:
0
4 [报告]
发表于 2012-12-03 13:50 |只看该作者
回复 2# waker

waker 发表于 2012-12-03 12:29
Quality:68/100  Signal level:-63 dBm  Noise level:-92 dBm

这个可以有N多种断句儿方法


多谢仁兄给的思路,原来还可以这样来断句,:wink: 谢谢!

   

论坛徽章:
0
5 [报告]
发表于 2012-12-03 13:51 |只看该作者
回复 3# jason680

非常感谢这位仁兄的答案,是ok的,谢谢。


   

论坛徽章:
8
双子座
日期:2013-08-31 07:37:12金牛座
日期:2013-09-09 18:49:12处女座
日期:2013-09-23 11:43:14处女座
日期:2013-10-09 19:48:21狮子座
日期:2014-03-24 18:22:12丑牛
日期:2014-04-22 22:07:51申猴
日期:2014-06-12 21:54:13双鱼座
日期:2014-06-13 21:52:31
6 [报告]
发表于 2012-12-03 15:01 |只看该作者
来晚了,楼主试试这个能满足不
  1. $ perl -F'\s+' -lane 'print @F[2..4] if /Quality/' file
  2. Signallevel:-43dBm
  3. Signallevel:-63dBm
  4. $
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP