Bash中如何筛选第一列最后一段为167-180的IP地址
筛选IP最后一段在167-180之间的行
最直观的方法:用awk处理
awk能轻松拆分文本字段,直接判断IP最后一段的数值范围,适合新手操作:
# 从文件读取内容时执行 awk -F '[ .]' '$4 >= 167 && $4 <= 180' input.txt # 如果是从其他命令的输出管道传递内容时执行 your_previous_command | awk -F '[ .]' '$4 >= 167 && $4 <= 180'
简单解释:
-F '[ .]':把点号和空格都设置成字段分隔符,这样IP的四个段、后面的接口名会被拆成独立的字段$4对应IP的最后一段数字,只要它在167到180之间,就输出整行内容
另一种方法:用grep正则匹配
如果熟悉正则表达式,也可以直接匹配符合范围的IP结尾:
grep -E '159\.180\.30\.(16[7-9]|17[0-9]|180) BVI19987' input.txt
正则规则说明:
16[7-9]:匹配167、168、16917[0-9]:匹配170到179的所有数字180:精确匹配180- 加上后面的
BVI19987可以避免误匹配其他相似格式的行
执行后得到的目标输出
159.180.30.167 BVI19987 159.180.30.168 BVI19987 159.180.30.170 BVI19987 159.180.30.171 BVI19987 159.180.30.172 BVI19987 159.180.30.173 BVI19987 159.180.30.174 BVI19987 159.180.30.175 BVI19987 159.180.30.176 BVI19987 159.180.30.177 BVI19987 159.180.30.178 BVI19987 159.180.30.179 BVI19987 159.180.30.180 BVI19987
内容的提问来源于stack exchange,提问作者Thijs
相关产品推荐
相关产品推荐

