bash - 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
解决方案
根据您给出的示例,我将假设您对“有效 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
推荐阅读
- apache-spark - how to best structure my linear programming using Spark
- php - $.scrollTo 在 Chrome 中不起作用
- qt - Why does my QGraphicsWidget disappear when it's bounding box is still in view?
- javascript - plugin cordova-file-transfer methode download returns code error 3
- javascript - How to avoid IE page freezing
- arrays - How can we check the content of two different arrays and fetch the corresponding index value from the third array and sum up them?
- hyperledger-fabric - Error while creating and joining a channel on Fabric "Build your first network tutorial"
- python - 从 Python 中的数组初始化实例列表
- android - Android Studio Firebase 依赖与 appcompat 不兼容
- express - 每次我注册一个新用户时,jwt 有效负载都是相同的