シェルツールだけを使用して、出力ストリームに0x00文字を保持しながら、NULL(0x00文字)を含むバイナリストリームをどのように編集できますか?
編集では、次のように、指定された位置の文字を別の文字(次の例では文字 '|')に置き換える必要があります。
dd ibs=1 skip=$offset count=$reglen status=none if=$ARQ |
sed 's/./\|/2' |
sed 's/./\|/5' #| more replacements....
ただし、sedは置換前にすべての '\ 0x00'文字を削除しています。
編集-@George Vasiliouテストを使用した私の環境でのsed動作のデモ:
$ echo -e "lineA\nlineB\nlineC" | tr '\n' '\0' | od -t x1
0000000 6c 69 6e 65 41 00 6c 69 6e 65 42 00 6c 69 6e 65
0000020 43 00
0000022
$ echo -e "lineA\nlineB\nlineC" | tr '\n' '\0' | sed 's/./|/5' | od -t x1
0000000 6c 69 6e 65 7c 6c 69 6e 65 42 6c 69 6e 65 43
0000017
私の環境はAIX 7.1であり、そこにあるsedにはGNUバージョンがありません。