Hp-Ux

HP-UX 的“xxd -p”替代方案 - 如何使用“xd”獲得相同的結果?

  • July 28, 2016

我有一個在工作中非常方便的命令。它使用FILENAME在一些十六進制原始文件中搜尋某個字元串。我在 Linux 系統中一直使用的命令是:

 find . -name '**FILENAME**' | while read filename; do 
   xxd -p $filename | tr -d '\n' | grep -i "**STRING**" > /dev/null
   if [ $? -eq 0 ];then 
       echo "STRING FOUND IN $filename"; 
   fi; 
done

我沒有建構這個命令。在 HP-UX 系統上,由於 xxd 不存在,我需要使用 xd。但我不知道如何獲得與 xxd -p 相同的結果。

如何調整此命令以在 HP-UX 系統上執行?

我不在 HP-UX 上,因此僅針對xd(1)進行了檢查:

xd -b -An -v $filename
  • -An防止顯示偏移
  • -b預設為單字節,(八進製表示od,十六進製表示xd
  • -v防止相同的行被替換為*

(很多系統,包括我的,都有od但沒有xd。所以為了便攜性,我od -tx1 -An -v $filename改用了。)

這將輸出單獨的十六進製字節,每個字節之間有一個空格。tr將命令更改為tr -d [:space:]將刪除所有空格,而不僅僅是換行符。

將所有這些結合在一起,您需要替換腳本的xxdtr部分,以便該行如下所示:

xd -b -An -v $filename | tr -d '[:space:]' | grep -i "**STRING**" > /dev/null

引用自:https://unix.stackexchange.com/questions/298207