V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kyrre
V2EX  ›  程序员

有没有一个命令可以把如下输出转成表格形式的?

  •  
  •   kyrre · 113 天前 · 1788 次点击
    这是一个创建于 113 天前的主题,其中的信息可能已经有所发展或是发生改变。
    # ethtool -i <网卡名>
    driver: tun
    version: 1.6
    firmware-version:
    expansion-rom-version:
    bus-info: tap
    supports-statistics: no
    supports-test: no
    supports-eeprom-access: no
    supports-register-dump: no
    supports-priv-flags: no
    

    我想要的功能如下:

    # ethtool -i <网卡名> |nbcmd
    driver | version | firmware-version | ...
    tun    | 1.6     |                  | ...
    

    看了一下 column 命令太傻了,好像不支持这种行内解析。

    当然,如果类似 xargs 这种方式就更好了

    awesome_cmd ethtool -i <网卡名>
    input 1  | driver | version | firmware-version | ...
    网卡名    | tun     | 1.6     |                  | ...
    
    第 1 条附言  ·  111 天前
    工具已经撸好了,比较特殊,专用,只能用于处理网卡信息,只对我的工作有帮助,就不贴出来献丑了😂
    14 条回复    2022-04-19 08:38:28 +08:00
    windvans
        1
    windvans  
       113 天前
    自己用 python 或者 bash 写一个么
    Vegetable
        2
    Vegetable  
       113 天前   ❤️ 2
    不大对吧,把无限长的 kv-list 转成无限宽的 1*N 的 table ?这也显示不下啊
    huahuajun9527
        3
    huahuajun9527  
       113 天前
    可以研究一下 awk 命令
    hxy100
        4
    hxy100  
       113 天前   ❤️ 2
    感觉你不转换还好看一些,转换了,条目一多显示不下的话排版就乱了。
    -----
    非要转换,你可以把这行代码保存为 bash ,然后通过管道调用这个 bash 即可
    cat|awk -F ':' '{h[NR]=$1;d[NR]=$2}END{for(i=1;i<=NR;i++){printf h[i]"|"};printf "\n";for(i=1;i<=NR;i++){printf d[i]"|"}}'|column -t -s "|" -o " | "
    -----
    HeyEvan
        5
    HeyEvan  
       113 天前   ❤️ 1
    ethtool -i <网卡名> | column -t -o ' | '
    HeyEvan
        6
    HeyEvan  
       113 天前
    @HeyEvan 没注意,请忽略
    kokutou
        7
    kokutou  
       113 天前
    不如这样?:

    driver : tun
    version : 1.6
    firmware-version :
    expansion-rom-version :
    bus-info : tap
    supports-statistics : no
    supports-test : no
    supports-eeprom-access: no
    supports-register-dump: no
    supports-priv-flags : no
    kokutou
        8
    kokutou  
       113 天前   ❤️ 1
    lululau
        9
    lululau  
       113 天前   ❤️ 1
    1. Install miller
    2. Exec: mlr --ixtab --omd --ips : cat
    HeyWeGo
        10
    HeyWeGo  
       113 天前 via Android
    @kokutou 这种感觉比横着看好。


    请问要怎么做呢?
    hxy100
        11
    hxy100  
       113 天前   ❤️ 2
    @HeyWeGo 这种情况更简单,直接在管道符后使用 column 命令即可。
    ----
    比如:
    cat 2.txt |column -t -s ':' -o ':'
    ----
    kyrre
        12
    kyrre  
    OP
       112 天前
    @lululau 这个就是我想要的效果。

    看了一下还是要自己撸,因为要批量处理一堆网卡的信息比对,要能够把结果集中到一个表里。
    xunxuntj
        13
    xunxuntj  
       112 天前
    Excel ,冒号分隔导入,形成两列 x 行的数据,复制后选择性粘贴,行列转换
    kyrre
        14
    kyrre  
    OP
       111 天前
    @xunxuntj 你这个思路在偶尔一次性操作时还是可以的,我现在想要个工具是在 linux 命令行下能够随时格式化输出的。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4365 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:04 · PVG 10:04 · LAX 19:04 · JFK 22:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.