我需要計算二進制文件中十六進制字符串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. 計算數組中出現的次數
- 6. C++,二進制數的計算
- 7. 計算每次出現的隨機數
- 8. 計算幾列中的出現次數
- 9. 計算表中的出現次數
- 10. MapReduce來計算對的出現次數
- 11. 計算出現值的次數
- 12. 計算SSRS表中的出現次數
- 13. 計算列中出現的次數?
- 14. 計算單元值的出現次數
- 15. 計算int的出現次數
- 16. 計算新線的出現次數?
- 17. 計算SQL中值的出現次數
- 18. 計算出現值的次數
- 19. 二進制計算
- 20. 計算輸出結果中出現元組次數的次數
- 21. 計算嵌套元素的JSON數據中出現的次數
- 22. 如何計算數據幀的列中出現值的次數?
- 23. 二進制計數
- 24. 計數二進制
- 25. 根據最後出現次數計算前面的零數
- 26. 計算類似行數據幀的出現次數
- 27. 如何計算SQL中數據的唯一出現次數
- 28. 在響應數據中計算字符串的出現次數
- 29. 計算熊貓數據框中文本的出現次數
- 30. 計算二進制表達式 - 將字符串轉換爲二進制數據