Menggunakan alat shell saja, bagaimana bisa aliran biner yang mengandung NULLs (0x00 karakter) diedit menjaga 0x00 karakter dalam aliran output?
Hasil edit perlu mengganti char pada posisi yang ditentukan untuk char lain (dalam contoh berikut oleh char '|'), seperti:
dd ibs=1 skip=$offset count=$reglen status=none if=$ARQ |
sed 's/./\|/2' |
sed 's/./\|/5' #| more replacements....
Tapi sed menghapus semua karakter '\ 0x00' sebelum penggantian.
EDIT - Demonstrasi perilaku sed di lingkungan saya menggunakan tes @ George Vasiliou:
$ 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
Lingkungan saya adalah AIX 7.1 dan sed yang tidak ada versi gnu.
Apakah kamu yakin dengan tes sederhana ini sepertinya tidak terjadi dalam kasus saya (gnu sed 4.2.2)
Dengan pengujian lebih lanjut, null akan hilang jika Anda mengganti karakter ke-6 dalam pengujian saya (posisi nol):
sumber
Coba bbe - sed clone untuk stream biner: https://sourceforge.net/projects/bbe/
sumber