You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除hexdump输出的第一列?已尝试awk/cut未解决

移除Hexdump输出中的第一列

我懂你为啥用awk或者cut没搞定了——hexdump是用多个连续空格来分隔地址列和数据列的,普通的字段分割方法会失效。给你几个简单的解决办法:

方法1:用Sed快速替换

Sed可以直接匹配行首的地址列(一串非空格字符)并删除它,命令简洁高效:

sed 's/^[^ ]* //' your_hexdump_file.txt

如果是直接从hexdump命令的输出实时处理,直接通过管道传递即可:

hexdump [你的hexdump参数] your_target_file | sed 's/^[^ ]* //'

这个命令的原理是:^[^ ]* 匹配行首所有非空格字符(也就是地址列),后面的 匹配地址列后的空格,把这部分整体替换为空,就能直接得到去掉第一列的结果。

方法2:用Awk灵活处理

Awk默认会把连续的空白字符当作单个分隔符,所以可以轻松跳过第一列:

awk '{for(i=2; i<=NF; i++) printf "%s ", $i; print ""}' your_hexdump_file.txt

或者更简洁的写法(自动处理掉开头的多余空格):

awk '{$1=""; sub(/^ /, ""); print $0}' your_hexdump_file.txt

第一个写法是从第二列开始逐个打印所有数据列,最后换行;第二个写法是直接清空第一列,再去掉开头残留的空格后输出。

为什么之前的Cut/Awk没生效?

  • 用cut -d' ' -f2-的话,因为hexdump的列之间是多个空格,cut会把每个空格都当作独立分隔符,导致输出里出现大量空字段,结果乱糟糟的。
  • 如果之前用的是awk '{print $2,$3,...}'这种写法,不仅麻烦,还没法适配行数不固定的情况,而上面的Awk写法会自动处理所有列。

用上面任意一个命令,都能得到你想要的输出:

64534 64943 00568 00262 01077 00721 00297 00140 00748 00288 02211 01124 02533 01271 02451 00997 03056 01248 02894 01026 02397 00696 00646 65114 00943 64707 01113 64179 01135 64179 00805 64109 00514 64045 64654 63037 63026 62014 62173 61625

内容的提问来源于stack exchange,提问作者Farhan Shafi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:59:00