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进制,             全部替换
    即:将匹配到的数字转换为十六进制,全局匹配全部替换
  • 相关阅读:
    洛谷
    洛谷
    NOIP 普及组 2014 螺旋矩阵
    NOIP 普及组 2014 珠心算测验
    hdu 1114Piggy-Bank(完全背包)
    hdu 2059龟兔赛跑("01"背包)
    洛谷 P1282 多米诺骨牌("01"背包)
    洛谷 P1140 相似基因(DP)
    洛谷 P1880 [NOI1995] 石子合并(区间DP)
    洛谷 P1280 尼克的任务
  • 原文地址:https://www.cnblogs.com/minglee/p/12160027.html
Copyright © 2011-2022 走看看