zoukankan      html  css  js  c++  java
  • vim利用查找命令,将所有的十进制数字转化位十六进制数字

    〇、前言

      在做程序开发的时候,通常有些ID会由各种子ID按位数拼接而成,如下所示:

    角色ID = 服务器ID左移16位 + 玩家下标
    UserID = ServerID << 16 + UserIndex 

      如果此ID打印在日志里面,则显示为10进制,想匹配服务器ID相同的玩家则会比较困难。

      这个时候就可以利用VIM丰富的函数,将服务器日志文件内的数字转为16进制,进而能够非常轻而易举的匹配相同服务器ID的玩家。

    一、操作流程

      1.用vim打开文件

    [WARN | 2020-01-06 15:02:11,974] | UserID[655471] User Online.
    [WARN | 2020-01-06 15:02:11,974] | UserID[655415] User Offline.
    [WARN | 2020-01-06 15:02:11,974] | UserID[655471] Create User Success.
    [WARN | 2020-01-06 15:02:11,974] | UserID[659811] User Offline
    [WARN | 2020-01-06 15:02:11,974] | UserID[918509] User Offline
    [WARN | 2020-01-06 15:02:11,974] | UserID[720895] User Offline
    [WARN | 2020-01-06 15:02:11,974] | UserID[720897] User Offline

      2.输入如下命令:

    :%s/d+/=printf("%X",submatch(0))/g

      3.最终结果显示如下:

    [WARN | 7E4-1-6 F:2:B,3CE] | UserID[A006F] User Online.
    [WARN | 7E4-1-6 F:2:B,3CE] | UserID[A0037] User Offline.
    [WARN | 7E4-1-6 F:2:B,3CE] | UserID[A006F] Create User Success.
    [WARN | 7E4-1-6 F:2:B,3CE] | UserID[A1163] User Offline
    [WARN | 7E4-1-6 F:2:B,3CE] | UserID[E03ED] User Offline
    [WARN | 7E4-1-6 F:2:B,3CE] | UserID[AFFFF] User Offline
    [WARN | 7E4-1-6 F:2:B,3CE] | UserID[B0001] User Offline

      4.至此,则想找服务器ID为10(也就是16进制的A)的玩家就非常轻易了。

    二、命令详解

      1."d+":匹配一个或多个数字,vim help参考:":help d"和":help d"

      2."printf":按照指定的格式输出,vim help参考:":help printf"

      3."submatch":返回匹配文本的低N个,如果N为0,返回整个匹配文本。vim help参考:":help submatch"

      所以以上命令:":%s/d+/=printf("%X",submatch(0))/g" 可以做如下分解:

      

    :%s       /    d+       /     =printf("%X",submatch(0))    /   g
    全局匹配        匹配数字           将匹配内容转换为16进制,             全部替换
    即:将匹配到的数字转换为十六进制,全局匹配全部替换
  • 相关阅读:
    组合两个表(sql查询语句)
    The six Day 数组中找出和为目标值
    实时监控-CPU
    使用 python 的细碎总结
    Visual Studio 2017 运行、调试使用CMake构建的多可执行程序项目
    git 学习笔记 —— 在不同的提交间进行切换和重置( git reset/reflog/tag 命令)
    git 学习笔记 —— 保留/丢弃当前分支修改并切换至其他分支
    git 学习笔记 —— 获取远端仓库以及提交信息至远端 git remote/fetch/branch
    git 学习记录—— git 中的仓库、文件状态等概念介绍
    VScode 配置 C++ 环境进行编译和调试
  • 原文地址:https://www.cnblogs.com/minglee/p/12160027.html
Copyright © 2011-2022 走看看