HP-UX用の「xxd -p」の代替 - 「xd」と同じ結果を得るには?

HP-UX用の「xxd -p」の代替 - 「xd」と同じ結果を得るには?

職場で非常に便利なコマンドがあります。特定の項目を検索します。ひも一部の16進生ファイルからファイル名。 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システムで実行するようにこのコマンドを調整するにはどうすればよいですか?

ベストアンサー1

私はHP-UXを使用していないので、これだけを確認しました。xd(1):

xd -b -An -v $filename
  • -Anオフセット表示の防止
  • -bデフォルトは1バイトです(8進数はod、16進数はxd)。
  • -v同じ行が次に置き換えられるのを防ぎます。*

(私を含む多くのシステムにはこの機能がありodますがありませんxd。だから移植性のために使用しましたod -tx1 -An -v $filename。)

これにより、各バイト間にスペースがある個々の16進バイトが出力されます。trコマンドを変更すると、tr -d [:space:]改行文字だけでなくすべてのスペースが削除されます。

これらすべてを 1 つにまとめるには、スクリプトの部分とxxd部分を置き換えて、行が次のように見えるようにする必要があります。tr

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

おすすめ記事