您可以使用正则表达式来匹配IP和端口格式,这里提供几种方法:
方法1:使用 grep + 正则表达式
grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:[0-9]{1,5}' filename
方法2:更精确的IP地址匹配
grep -Eo '((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):[0-9]{1,5}' filename
方法3:使用 awk(如果在一行中有多个IP)
awk '{
for(i=1;i<=NF;i++) {
if($i ~ /^([0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]{1,5}$/) {
print $i
}
}
}' filename
方法4:提取文本中的所有IP:端口组合
grep -Po '\b(?:\d{1,3}\.){3}\d{1,3}:\d{1,5}\b' filename
示例:
假设文件内容为:
服务器地址: 10.8.87.123:9906, 备份地址: 192.168.1.100:8080
连接信息: 172.16.23.45:3306 mysql数据库
无效地址: 300.400.500.600:99999
运行上述任一命令后,输出将是:
10.8.87.123:9906
192.168.1.100:8080
172.16.23.45:3306
参数说明:
-E
:使用扩展正则表达式-o
:只输出匹配的部分+P
:使用Perl兼容正则表达式(更强大) -[[:digit:]]或
[0- {1, }或
\d`:匹配数字
这个正则表达式会匹配任意合法的IP地址(xxx.
x.x.x)加上冒号和端口号(
内容由零声教学AI助手提供,问题来源于学员提问