首页 > 解决方案 > linux下的大文本文件处理

问题描述

我有一个像这样的巨大文本文件(至少 1000000 行):

1.1.1.1.10001  2.2.2.2.80
3.3.3.3.53  4.4.4.4.23456
5.5.5.5  6.6.6.6
7.7.7.7.45329  8.8.8.8.443

删除两列中具有有效 IP 地址的行的最佳和最快逻辑是什么?对于上述输入,要删除的行是

5.5.5.5  6.6.6.6

标签: bashtext

解决方案


根据您给出的示例,我将假设您对“有效 IP 地址”的定义只是排除了端口指定。代替更详细的问题,请注意此命令将删除456.789.123.456无效的 IPv4。

$ awk -v re='^([0-9]+\\.){3}[0-9]+$' '$1!~re && $2!~re' file
1.1.1.1.10001  2.2.2.2.80
3.3.3.3.53  4.4.4.4.23456
7.7.7.7.45329  8.8.8.8.443

推荐阅读