我需要計算二進制文件中十六進制字符串0xFF 0x84 0x03 0x07
的出現次數,沒有太多的麻煩...有沒有一種快速的方式來從Linux命令行或我應該編寫專用代碼來完成它嗎?計算二進制數據的出現次數
4
A
回答
0
你試過grep -a
?
-a, --text
Process a binary file as if it were text; this is equivalent to the --binary-files=text option.
0
使用hexdump都喜歡
hexdump -v -e '"0x" 1/1 "%02X" " "' <filename> | grep -oh "0xFF 0x84 0x03 0x07" |wc -w
hexdump
將輸出二進制文件中像0xNN
grep
給定的格式將找到的所有出現:
該字符串沒有考慮在一條線上重複的相同的字符
wc
會給你最終計
0
如何:
$ hexdump a.out | grep -Ec 'ff ?84 ?03 ?07'
0
這並不完全回答你的問題,但是當搜索字符串是ASCII,但該文件是二進制文件沒有解決的問題:
cat binaryfile | sed 's/SearchString/SearchString\n/g' | grep -c SearchString
基本上,'grep'幾乎就在那裏,除非它只計算一次發生,如果之間沒有換行字節,所以我添加了新行字節。
1
如果您的grep
版本採用-P
參數,則可以使用grep -a -P
在二進制文件內搜索任意二進制字符串。你想要什麼,這是接近:
grep -a -c -P '\xFF\x84\x03\x07' myfile.bin
-a
確保二進制文件不會被跳過-c
輸出計-P
指定您模式是一個Perl的正表達式,它允許字符串包含上述\xNN
格式的十六進制字符。
不幸的是,grep -c
將只計算模式出現的「線」的數量,即使出現多次上線。 (我不知道爲什麼這將是一個理想的功能)。
要獲得事件的確切數量與grep
,看來你需要做的:
grep -a -o -P '\xFF\x84\x03\x07' myfile.bin | wc -l
grep -o
每場比賽析出到自己的路線,並wc -l
計數線。請注意,這取決於您的二進制字符串不包含換行符。
相關問題
- 1. 計算出現次數
- 2. 計算出現次數
- 3. 根據標準計算出現次數
- 4. 計算數組中出現的次數
- 5. C++,二進制數的計算
- 6. 計算新線的出現次數?
- 7. 計算SSRS表中的出現次數
- 8. 計算每次出現的隨機數
- 9. 計算int的出現次數
- 10. 計算SQL中值的出現次數
- 11. 計算輸出結果中出現元組次數的次數
- 12. 如何計算數據幀的列中出現值的次數?
- 13. 二進制計數
- 14. 根據最後出現次數計算前面的零數
- 15. 計算熊貓數據框中文本的出現次數
- 16. 在響應數據中計算字符串的出現次數
- 17. 如何計算出現次數
- 18. 計算每行字符出現次數
- 19. SQL:計算唯一出現次數?
- 20. 計算列表python中出現次數
- 21. 使用Multiset來計算出現次數
- 22. 計算新的一行/行的出現次數出現
- 23. 計數出現次數[R]
- 24. 根據另一列計算值的出現次數
- 25. 二進制計算器
- 26. 計算二進制間隙
- 27. 數學計算十進制到二進制(JAVA)
- 28. 二進制數據
- 29. 二進制數據
- 30. 計算字符串出現次數和繪製直方圖