Chinaunix

标题: 如何打印出格式不统一行里包含大于1000的数字 [打印本页]

作者: panwei789    时间: 2013-04-26 17:21
标题: 如何打印出格式不统一行里包含大于1000的数字

想提取文本里的每个端口号,但是每行格式不统一,现在的思路是提取每行里大于1000的数字,不知有没有办法实现?谢谢


test_001 = (address = (protocol = tcp) (host = 192.168.2.1) (port = 8911) (queuesize=32))
sid_list_test_001 =
(sid_list =
(sid_desc = (sdu=32767)
(sid_desc = (sdu=32767)
test_002 = (address = (protocol = tcp) (host = 192.168.2.1) (port=8912) (queuesize=32))
(protocol=tcp) (host=192.168.2.1) (port=2110) (RATE_LIMIT=40) (queuesize=12
作者: yestreenstars    时间: 2013-04-26 17:52
  1. awk -vRS='[^0-9]+' '$0>1000'
复制代码

作者: panwei789    时间: 2013-04-26 17:55
好使!多谢了
作者: yinwei2012    时间: 2013-04-26 19:50
本帖最后由 yinwei2012 于 2013-04-26 19:50 编辑

grep -E '[0-9]+'  -o file | awk '$0>1000'
作者: seesea2517    时间: 2013-04-27 11:08
本帖最后由 seesea2517 于 2013-04-27 11:09 编辑

回复 2# yestreenstars


    真厉害,最简单的办法了。
既然迟到了,只好来点不一样的:
  1. [seesea@UC ~]$ cat file
  2. test_001 = (address = (protocol = tcp) (host = 192.168.2.1) (port = 8911) (queuesize=32))
  3. sid_list_test_001 =
  4. (sid_list =
  5. (sid_desc = (sdu=32767)
  6. (sid_desc = (sdu=32767)
  7. test_002 = (address = (protocol = tcp) (host = 192.168.2.1) (port=8912) (queuesize=32))
  8. (protocol=tcp) (host=192.168.2.1) (port=2110) (RATE_LIMIT=40) (queuesize=
  9. [seesea@UC ~]$ grep -Eo '[0-9]{4,}' file
  10. 8911
  11. 32767
  12. 32767
  13. 8912
  14. 2110
复制代码

作者: yestreenstars    时间: 2013-04-27 11:21
回复 5# seesea2517


    貌似你的看起来更简单啊~
作者: seesea2517    时间: 2013-04-27 11:34
回复 6# yestreenstars


    数数字符好像是少几个哈。
作者: cao627    时间: 2013-04-27 11:53
[@]seesea2517[/@]д[1-9][0-9]{3,}




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2