reilost1 2009-10-10 17:26
浏览 202
已采纳

一个正则的问题

假如有这样一个文本是分列的..

Proto Local Address Foreign Address State PID
[color=red]TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1208[/color]
TCP 192.168.16.109:1061 207.46.124.221:80 ESTABLISHED 1840

现在现在要得到State为LISTENING(红色那列)的Local Address列和PID列的内容.
就是说得到的结果为
0.0.0.0:135 1208

请问用正则该如何得到结果...感谢大家麻烦给个思路吧...
[b]问题补充:[/b]
呵呵,要求用正则来搞定,而且只许用一条正则..我也没办法啊...上面交代下来的... :cry: :cry:
Linux shell 怎么做呢.提供下思路嘛,我是一点思路都没有..
用零宽断言的话也没法取到这样间隔的列...我是没办法了 :cry: :cry:
[b]问题补充:[/b]
感谢lovewhzlq不过要求是用正则直接得到而不是通过java做处理的..
同时还要求了要State为LISTENING...
用零宽断言可以满足State为LISTENING但是我能写出单一列或者是前几列,而没法写出要求的间断那种....
[img]http://dl.iteye.com/upload/attachment/154742/e5ccabab-f965-3bae-829f-823295a58698.jpg[/img]

  • 写回答

4条回答 默认 最新

  • icefishc 2009-10-10 20:58
    关注

    [code="shell"]
    $ cat log
    Proto Local Address Foreign Address State PID
    TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1208
    TCP 192.168.16.109:1061 207.46.124.221:80 ESTABLISHED 1840

    $ perl -e 'print $1, $2, "\n" if m/TCP\s*(?:\d{1,3}(?:.\d{1,3}){3}:\d+)\s*(\d{1,3}(?:.\d{1,3}){3}:\d+)\s*LISTENING\s*(\d+)/' -n log

    0.0.0.0:01208
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源