使用正则表达式提取范围

时间:2016-12-19 05:46:03

标签: regex linux awk sed grep

例如

1cn1
1cn2
1cn3
1cn4
1cn5
1cn6
1cn7
1cn8
1cn9
1cn10
1cn11
1cn12

提取1cn81cn12

之间的行 像这样我有数百行,想通过输入提取任何范围。

$ cat test | grep '[$0-9]'
1cn1
1cn2
1cn3
1cn4
1cn5
1cn6
1cn7
1cn8
1cn9
1cn10
1cn11
1cn12

这些是节点名称,想要提取节点范围内的节点名称。从1cn81cn12

的行

1 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情:

[[:alnum:]]{3}([8-9]|1[0-2])

简短说明:

  • [[:alnum:]]{3}:与任何字母(大写或小写)和数字相匹配,超过3次;
  • ([8-9]|1[0-2]):匹配8和9 [8-9]|,排名第一,0或1,1[0-2]
$ cat test
1cn1
1cn2
1cn3
1cn4
1cn5
1cn6
1cn7
1cn8
1cn9
1cn10
1cn11
1cn12
$ egrep '[[:alnum:]]{3}([8-9]|1[0-2])' test
1cn8
1cn9
1cn10
1cn11
1cn12