如何从一条线切割/获取所有RE模式

时间:2012-12-06 13:53:25

标签: regex grep cut

如何获取所有实例,只有正则表达式的实例包含在一行或字符串中?

例如,假设网页的输出(所有单行)为:

<Table border=1 cellpadding=2><TR><TH><font size=2>LAN IP BLOCK</font></TH><TH><font size=2>CUST_NAME</font></TH> <TH><font size=2>ID
</TH></TR><TR><TD><font size=2>10.4.4.0 / 29</font></TD><TD><font size=2>Customer data</font></TD><TD><font size=2></font></TD></T
TD><font size=2>10.1.1.0 / 27</font></TD><TD><font size=2>Customer</font></TD><TD><font size=2></font></TD></TR></Table><p>

我想获取IP CIDR数据的每个实例。我知道我必须使用IP地址RE(我相信我可以找到/找出它),但是如何获得EACH实例并简单地删除所有其他文本?我想在命令行上用grep / sed等做这个,但我想我需要使用python。我知道我可以使用Perl,但我必须安装它。

1 个答案:

答案 0 :(得分:2)

您正在寻找grep选项-o-E

grep -oE "pattern1|pattern2|pattern3|pattern4|...|patternN" input_file

来自man grep

 -o, --only-matching
      Print only the matched (non-empty) parts of a matching line,
      with each such part on a separate output line.

 -E, --extended-regexp
      Interpret PATTERN as an extended regular expression
      (-E is specified by POSIX.)