Chỉ sử dụng các công cụ shell, làm thế nào một luồng nhị phân có chứa NULL (0x00 chars) có thể được chỉnh sửa để giữ các ký tự 0x00 trong luồng đầu ra?
Việc chỉnh sửa cần thay thế một char ở một vị trí đã chỉ định cho một char khác (trong ví dụ sau bởi char '|'), như:
dd ibs=1 skip=$offset count=$reglen status=none if=$ARQ |
sed 's/./\|/2' |
sed 's/./\|/5' #| more replacements....
Nhưng sed đang xóa tất cả các ký tự '\ 0x00' trước khi thay thế.
EDIT - Trình diễn hành vi sed trong môi trường của tôi bằng thử nghiệm @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
Môi trường của tôi là AIX 7.1 và sed không có phiên bản gnu.