【问题标题】:How to make a hexdump line by line with xxd?如何用xxd逐行制作hexdump?
【发布时间】:2017-02-18 12:09:07
【问题描述】:

使用 cat 创建示例文件。

cat > /tmp/test.txt <<EOF
> X1
> X22
> X333
> X4444
> EOF

检查示例文件中的内容。

cat  /tmp/test.txt
X1
X22
X333
X4444

用 xxd 做一个 hexdump。

xxd   /tmp/test.txt
0000000: 5831 0a58 3232 0a58 3333 330a 5834 3434  X1.X22.X333.X444
0000010: 340a  

如何用xxd逐行制作hexdump,如下所示:

58 31 0a
58 32 32 0a
58 33 33 33 0a
58 34 34 34 34 0a

【问题讨论】:

    标签: bash xxd


    【解决方案1】:
    $ xxd  -ps </tmp/test.txt|sed -e 's/\(..\)/\1 /g' -e 's/0a /0a\n/g'
    58 31 0a
    58 32 32 0a
    58 33 33 33 0a
    58 34 34 34 34 0a 
    

    【讨论】:

    • 另外一个是第一个提出这种解决方案的人!接受投票应该是你的!
    • 我用其他长文件测试过,长文件不够健壮。
    • 有多长?我的意思是以字节为单位的大小,行数?
    • 请下载并保存为 /home/urls.csv ,用 xxd -ps /urls.csv|sed -e 's/(..)/ 进行测试\1 /g' -e 's/0a /0a\n/g'.
    • 我明白了,谢谢你的测试文件。现在很清楚了!是的,在这种情况下答案是错误的,因为xxd -ps 将行换成了 60 个字符。
    【解决方案2】:

    毕竟我发现hexdump 工具结合sed 是最好的解决方案:

    hexdump -v -e '/1 "%02x "' /tmp/test.txt | sed 's/0a /0a\n/g'
    

    【讨论】:

    • xargs -I'{}' bash -c 'xxd ,not xargs -I'{}' bash -c 'xxd
    • 什么意思?
    • 在你的第二个答案中,有一个 ' 丢失,它是 "${1}"' ,而不是 "${ 1}" .
    • 啊,我明白了! :D 该死的,这很难得到。 :) ...无论如何,看起来 xargs 方法根本不是一个好主意。
    【解决方案3】:

    请下载并保存为/home/urls.csv。

    sample file to test

    使用
    hexdump -v -e '/1 "%02x "' /home/urls.csv | 进行测试sed 's/0a /0a\n/g'

    使用
    xargs -I'{}' bash -c 'xxd

    使用
    xargs -I'{}' bash -c 'hd

    使用测试

    xxd  -ps </home/urls.csv |sed -e 's/\(..\)/\1 /g' -e 's/0a /0a\n/g'
    

    很明显,Ipor Sircer 的回答对于长文件来说不够健壮。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多