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条)

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题