关于bash:grep with wildcard symbols

grep with wildcard symbols

用grep进行通配符搜索

我有一个包含许多IP地址的文件。我想列出文件中的所有IP地址,并使用模式192.16*的grep,但它没有显示整个IP地址列表。我只能在使用句点和星号符号的同时列出整个IP地址。所以我怀疑为什么第二个选项不起作用,而第三个选项起作用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
root@test:~/test# cat z
192.168.1.0
192.168.2.0
192.168.110.7
192.168.115.5

1. root@test:~/test# grep -o 192.1 z
192.1
192.1
192.1
192.1


2. root@test:~/test# grep -o 192.1* z
192.1
192.1
192.1
192.1

3. root@test:~/test# grep -o 192.1. z
192.16
192.16
192.16
192.16


4. root@test:~/test# grep -o 192.1.* z
192.168.1.0
192.168.2.0
192.168.110.7
192.168.115.5


为什么你的工作是:(一)命令

1
1. root@test:~/test# grep -o 192.1 z

1921将只匹配部分匹配,只有将印制的《Because of -o开关。

1
2. root@test:~/test# grep -o 192.1* z

只有192192119211192111等将被匹配,匹配的部分,只有将印制的《Because of -o开关。您输入的日期不包含WHERE子句,这使任何差异。

1
3. root@test:~/test# grep -o 192.1. z

1921将只匹配部分匹配,只有将印制的《Because of -o开关。这给了你一个更多的字符(意为".任何单字符)。

1
4. root@test:~/test# grep -o 192.1.* z

任何线将开始与1921匹配部分匹配,只有将印制的《Because of -o开关。.*到比赛结束的任何线,包括空字符串。

IP地址的正则表达式

你可以找到很多网站的IP地址的正则表达式的计算器的例子,这是国有企业的问题。然而,值得注意的是,有些用来表达只有IP地址匹配,因此包含的开始端(^)、人物($(地图)。如果你将要删除那些只包含您输入的地址以上。


  • 点(.)匹配任何字符,你有\.逃避它。

  • -o节目只有部分匹配,如果你ommit .*(从端)的任何字符),它将ommit休息线(这是不匹配的字符串的一部分)。

  • .*CAN比赛很多比你更需要它将匹配的其余线优惠),你说:[0-9.]*已经明确允许。

  • 确保你把单引号在搜索中的表达'192.168\.[0-9.]*'壳,否则将解释特殊字符,和替代的表达与匹配的文件名(luckily You didn’t有任何匹配的文件名)。

  • 你可能只想搜索的词语是(-w)。如果你想确保你的IP地址和不匹配的唯一的东西,它resembles(在相邻点位,4≤255项,……)你会需要很多更复杂的表达。