linux - 如何从ip中提取前2个数字
问题描述
我有文字:
1.1.1.1
12.123.1.1
123.123.1.1
213.12.123.1
34.12.123
1.123.4.1
我怎样才能提取看起来像:
1.1
12.123
123.123
213.12
34.12
1.123
解决方案
使用awk
它就像使用'.'
(eg awk -F.
) 的字段分隔符并打印由 a 分隔的前两个字段一样简单,'.'
这可以通过printf
或通过设置来完成OFS=.
,例如:
awk -F. '{printf "%d.%d\n", $1, $2}' file
或者
awk -F. -v OFS=. '{print $1, $2}' file
示例使用/输出
随着您的输入file
,例如
$ awk -F. -v OFS=. '{print $1, $2}' file
1.1
12.123
123.123
213.12
34.12
1.123
使用sed
你可以很容易地处理这个问题sed
,例如:
$ sed -r 's/([0-9]+[.][0-9]+).*$/\1/' file
1.1
12.123
123.123
213.12
34.12
1.123
您只需使用扩展的正则表达式来捕获第一组数字(八位字节)点和第二个八位字节,然后将该信息重新插入作为反向引用。
如果由于某种原因您仅限于基本的正则表达式,那么您可以使用:
sed 's/\([0-9][0-9]*[.][0-9][0-9]*\).*$/\1/' file
结果相同。如果您还有其他问题,请仔细查看并告诉我。
推荐阅读
- django - 如何将模型设置为 Django 中 OneToOne 字段的默认值
- python - 将“对象”类型的数据框列转换为 set()
- python - 为什么 python 的 sum() 需要 start 参数?
- python-3.x - 根据条件替换 Python 数据帧的子集
- ios - Flutter Flavors:找不到 Generated.xcconfig
- r - 找到从一个顶点到同一个顶点的路径
- verilog - 如何编辑和测试 Verilog 网表
- function - 用numpy sum替换与两个变量的函数内部参数相关的for循环
- laravel - Laravel - 如何编写验证外键数组中唯一字段的组合
- javascript - 无法从使用 spring RedisTemplate 存储的 javascript 中获取 redis 嵌套哈希键值