我有一个看起来像这样的
的hexdump输出0101f10 64534 64943 00568 00262 01077 00721 00297 00140
0101f20 00748 00288 02211 01124 02533 01271 02451 00997
0101f30 03056 01248 02894 01026 02397 00696 00646 65114
0101f40 00943 64707 01113 64179 01135 64179 00805 64109
0101f50 00514 64045 64654 63037 63026 62014 62173 61625
我想删除第一列,但我不知道hexdump命令使用了什么分隔符。我尝试用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
答案 0 :(得分:1)
使用sed
hexdump /path/to/file | awk '{sub(/[^ ]+ /, ""); print $0}'
使用gnu sed
sed 's/[^[:blank:]]*[[:blank:]]*//' infile
答案 1 :(得分:0)
input... | sed -E $'s/ +/\t/g' | cut -f2-
(假设$'\t'
为Bash,但GNU sed
无论如何都直接支持\t
。)
答案 2 :(得分:0)
scanf("%s", country); // Note, no address-of operator
这将完成这项工作。
答案 3 :(得分:0)
如果分隔符实际上是一堆空格,请使用tr
挤压重复(-s
)psace到选项卡并使用cut
摆脱第一列:
$ cat file | tr -s ' ' '\t' | cut -f 2-
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
答案 4 :(得分:0)
上述所有解决方案都可以正常使用,只需添加 awk
解决方案。
所以,你只需要省略第一列,但得到其余部分,你可以试试这个:
awk '{$1=""; print $0}' /path/to/hexfile
它完美无缺,除了它在每行的开头留下一个空格。如果这让您感到困扰,可以使用substr()
本身中的 awk
功能解决方法。
awk '{$1=""; print substr($0,2)}' /path/to/hexfile
要了解更多可能的方法, follow this link