簡體   English   中英

xxd僅輸出二進制

[英]xxd output only the binary

使用命令:

xxd -b some_text

將輸出二進制表示形式和原始文本:

000054c: 11101111 10100001 10110110 00010000 01011011 10000110  ....[.
0000552: 01111000 11001000 01010101 11000101 11101111 10101111  x.U...
0000558: 10010111 11101010 00011001 01010100 10101010 10001110  ...T..

如何使實用程序僅輸出二進制文件而沒有其他內容?

該組合未在其手冊頁中列出。 但是,您可以使用awk / sed / perl(您的選擇)過濾結果。 對於給定的示例,sed就足夠了:

xxd -b some_text | sed -e 's/^[^:]*:[[:space:]][[:space:]]*//' -e 's/[[:space:]][[:space:]]*.\{6,6\}$//'

那是:

  • 在第一個“ -e”選項中,通過第一個“:”和空格將所有內容刪除。

  • 在第二個“ -e”選項中,至少以一個空格開頭

  • 后跟6個字符(尚不清楚它們是否可以是空格,但測試似乎確認它們不是空格)
  • 去除整個匹配的字符串

您可以將“ [[:: space:]] [[:: space:]] *”完全替換為要匹配的空格數,但是,雖然更冗長,但字符類也更強大。

或者(由於空白是awk中的默認字段分隔符),因此可以通過awk傳遞:

xxd -b some_text | awk '{ printf "%s %s %s %s %s %s\n", $2, $3, $4, $5, $6, $7 }'

雖然通常我會使用最簡單的工具。

如果您只想要二進制文件,而不是偏移量,則可以擴展Thomas Dickey的sed襯套來去除偏移量:

xxd -b some_text | sed -e 's/^.*: //; s/[[:space:]][[:space:]]*.\{6,6\}$//'

“ xxd”不使用“ some_text”作為輸入,而是“ infile”。
使用“ cut”命令打印6個字段(2至7)的答案更簡短:

xxd -b some_file | cut -d\  -f2-7

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM