将“xxd”命令与输出结合在一起

将“xxd”命令与输出结合在一起

我有以下十六进制转储:

00000000: 2345 5854 5241 530a 0a31 2e20 746f 2061  #EXTRAS..1. to a
00000010: 6464 2075 7365 723a 2060 7375 646f 2075  dd user: `sudo u
00000020: 7365 7261 6464 205b 7573 6572 6e61 6d65  seradd [username
00000030: 5d60 2061 6e64 2074 6865 6e20 6073 7564  ]` and then `sud
00000040: 6f20 7061 7373 7764 205b 7573 6572 6e61  o passwd [userna
00000050: 6d65 5d60 2074 6f20 6164 6420 7061 7373  me]` to add pass
00000060: 776f 7264 0a0a 312e 2074 6865 2063 6f6d  word..1. the com
00000070: 6d61 6e64 2061 626f 7665 2077 696c 6c20  mand above will 
00000080: 6e6f 7420 6164 6420 6120 686f 6d65 2064  not add a home d
00000090: 6972 6563 746f 7279 2066 6f72 2074 6865  irectory for the
000000a0: 2061 6464 6564 2075 7365 720a 0a31 2e20   added user..1. 
000000b0: 746f 2067 6976 6520 7468 6520 7573 6572  to give the user
000000c0: 2061 2068 6f6d 6520 6469 7265 6374 6f72   a home director
000000d0: 792c 2069 6e63 6c75 6465 2074 6865 2060  y, include the `
000000e0: 2d6d 6020 666c 6167 0a0a 0a              -m` flag...

vim 告诉我它是 235b,我编写的用于计算所有字符的简单命令告诉我有 243 个字符:

xxd -ps extras.md | sed 's/\(..\)/\1\n/g' | wc -l

另外,左边的内存列告诉它占用了:'d0 + 11 字节,所以 219 字节'?如果我理解正确的话。

有人可以帮我将 219、235 和 243 连接在一起吗?或者告诉我我做错了一切

这也有效,但请告诉我如何解决

答案1

十六进制转储显示从 0x00 (0) 到 0xEA (234) 的字符。这使得总共 235 个字符。

您的命令xxd -ps extras.md | sed 's/\(..\)/\1\n/g'还输出 8 个额外的空行(原始输出的行尾xxd),这些空行按 计数wc -l

解决方案:只计算非空行

xxd -ps extras.md | sed 's/\(..\)/\1\n/g' | grep -c .

相关内容