두 가지 형식의 텍스트로 파일 내용을 표시하는 데 사용됩니다.그리고SE에 대한 다른 게시물의 바이너리 데이터 ASCII 렌더링 출력을 표시할지 아니면 출력을 표시할지 결정할 수 없습니다 xxd
.
중간 경로로 Hex Dump를 생각했습니다.하다개행 문자를 존중하세요.
(기타) 예:
00000000: 636f 6d6d 6974 2031 3933 0074 7265 6520 커밋 193.tree 00000010: 3331 3439 3530 3736 3263 6561 3232 3364 314950762cea223d 00000020: 3230 6233 3931 6235 3162 3336 3463 6134 20b391b51b364ca4 00000030: 3165 3636 3234 39310a61 7574 686f 7220 1e662491.작가 00000040: 4578 616d 706c 6520 5573 6572 203c 6578 예시 사용자<ex 00000050: 616d 706c 6575 7365 7240 7374 6163 6b6f 충분한 사용자 @stacko 00000060: 7665 7266 6c6f 772e 636f 6d3e 2031 3439 verflow.com> 149 00000070: 3831 3236 3633 3320 2b30 3230 300a636f 8126633 +0200.흔한 00000080: 6d6d 6974 7465 7220 4578 616d 706c 6520 mmitter 예 00000090: 5573 6572 203c 6578 616d 706c 6575 7365 사용자<사용예 000000a0: 7240 7374 6163 6b6f 7665 7266 6c6f 772e r@stackoverflow. 000000b0: 636f 6d3e 2031 3439 3831 3236 3633 3320 com> 1498126633 000000c0: 2b30 3230 300a 0a69 6e69 740a +0200..내부에.
될 것입니다
00000000: 636f 6d6d 6974 2031 3933 0074 7265 6520 커밋 193.tree 00000010: 3331 3439 3530 3736 3263 6561 3232 3364 314950762cea223d 00000020: 3230 6233 3931 6235 3162 3336 3463 6134 20b391b51b364ca4 00000030: 3165 3636 3234 39310a 1e662491. 00000030: 61 7574 686f 7220 작성자 00000040: 4578 616d 706c 6520 5573 6572 203c 6578 예시 사용자<ex 00000050: 616d 706c 6575 7365 7240 7374 6163 6b6f 충분한 사용자 @stacko 00000060: 7665 7266 6c6f 772e 636f 6d3e 2031 3439 verflow.com> 149 00000070: 3831 3236 3633 3320 2b30 3230 300a 8126633 +0200. 00000070: 636f 회사 00000080: 6d6d 6974 7465 7220 4578 616d 706c 6520 mmitter 예 00000090: 5573 6572 203c 6578 616d 706c 6575 7365 사용자<사용예 000000a0: 7240 7374 6163 6b6f 7665 7266 6c6f 772e r@stackoverflow. 000000b0: 636f 6d3e 2031 3439 3831 3236 3633 3320 com> 1498126633 000000c0: 2b30 3230 300a +0200. 000000c0: 0a . 000000c0: 69 6e69 740a 내부에.
또는
00000000: 636f 6d6d 6974 2031 3933 0074 7265 6520 커밋 193.tree 00000010: 3331 3439 3530 3736 3263 6561 3232 3364 314950762cea223d 00000020: 3230 6233 3931 6235 3162 3336 3463 6134 20b391b51b364ca4 00000030: 3165 3636 3234 39310a 1e662491. 00000030: 61 7574 686f 7220 작성자 00000040: 4578 616d 706c 6520 5573 6572 203c 6578 예시 사용자<ex 00000050: 616d 706c 6575 7365 7240 7374 6163 6b6f 충분한 사용자 @stacko 00000060: 7665 7266 6c6f 772e 636f 6d3e 2031 3439 verflow.com> 149 00000070: 3831 3236 3633 3320 2b30 3230 300a 8126633 +0200. 00000070: 636f 회사 00000080: 6d6d 6974 7465 7220 4578 616d 706c 6520 mmitter 예 00000090: 5573 6572 203c 6578 616d 706c 6575 7365 사용자<사용예 000000a0: 7240 7374 6163 6b6f 7665 7266 6c6f 772e r@stackoverflow. 000000b0: 636f 6d3e 2031 3439 3831 3236 3633 3320 com> 1498126633 000000c0: 2b30 3230 300a +0200. 000000c0: 0a . 000000c0: 69 6e69 740a 내부에.
또는
00000000: 636f 6d6d 6974 2031 3933 0074 7265 6520 커밋 193.tree 00000010: 3331 3439 3530 3736 3263 6561 3232 3364 314950762cea223d 00000020: 3230 6233 3931 6235 3162 3336 3463 6134 20b391b51b364ca4 00000030: 3165 3636 3234 39310a 1e662491. 61 7574 686f 7220 작성자 00000040: 4578 616d 706c 6520 5573 6572 203c 6578 예시 사용자<ex 00000050: 616d 706c 6575 7365 7240 7374 6163 6b6f 충분한 사용자 @stacko 00000060: 7665 7266 6c6f 772e 636f 6d3e 2031 3439 verflow.com> 149 00000070: 3831 3236 3633 3320 2b30 3230 300a 8126633 +0200. 636f 회사 00000080: 6d6d 6974 7465 7220 4578 616d 706c 6520 mmitter 예 00000090: 5573 6572 203c 6578 616d 706c 6575 7365 사용자<사용예 000000a0: 7240 7374 6163 6b6f 7665 7266 6c6f 772e r@stackoverflow. 000000b0: 636f 6d3e 2031 3439 3831 3236 3633 3320 com> 1498126633 000000c0: 2b30 3230 300a +0200. 0a . 69 6e69 740a 내부에.
또는 유사한
답변1
정확히 당신이 요구하는 것은 아니지만 꽤 가깝습니다.
파일에 널 바이트(값 0x00)가 있어 상황이 더 복잡해집니다. 해당 바이트 값이 입력에 없으면 이 바이트를 DEL(값이 0x7F인 바이트)로 변경될 수 있다고 가정합니다.
이는 tr을 사용하여 수행됩니다.
$ cat infile | tr '\00' '\177'
xxd를 사용하여 파일을 처리한 후 변경 사항을 되돌릴 수 있습니다.
다음 스크립트를 실행하세요.
#!/bin/bash
while IFS=$'\n' read line; do
length=$((${#line}+1))
{
dd if=/dev/zero bs=1 count=$((position%16)) 2>/dev/null;
echo "$line";
} |
tr '\177' '\0' |
xxd -o "$((16*(position/16)))" -l "$((length+position%16))"
echo
(( position=position+length ))
done < <(cat infile | tr '\0' '\177')
얻으려면 :
$ ./so
00000000: 636f 6d6d 6974 2031 3933 0074 7265 6520 commit 193.tree
00000010: 3331 3439 3530 3736 3263 6561 3232 3364 314950762cea223d
00000020: 3230 6233 3931 6235 3162 3336 3463 6134 20b391b51b364ca4
00000030: 3165 3636 3234 3931 0a 1e662491.
00000030: 0000 0000 0000 0000 0061 7574 686f 7220 .........author
00000040: 4578 616d 706c 6520 5573 6572 203c 6578 Example User <ex
00000050: 616d 706c 6575 7365 7240 7374 6163 6b6f ampleuser@stacko
00000060: 7665 7266 6c6f 772e 636f 6d3e 2031 3439 verflow.com> 149
00000070: 3831 3236 3633 3320 2b30 3230 300a 8126633 +0200.
00000070: 0000 0000 0000 0000 0000 0000 0000 636f ..............co
00000080: 6d6d 6974 7465 7220 4578 616d 706c 6520 mmitter Example
00000090: 5573 6572 203c 6578 616d 706c 6575 7365 User <exampleuse
000000a0: 7240 7374 6163 6b6f 7665 7266 6c6f 772e r@stackoverflow.
000000b0: 636f 6d3e 2031 3439 3831 3236 3633 3320 com> 1498126633
000000c0: 2b30 3230 300a +0200.
000000c0: 0000 0000 0000 0a .......
000000c0: 0000 0000 0000 0069 6e69 740a .......init.
귀하가 요청한 것과 정확히 일치하지는 않지만(0이 많이 추가되었기 때문에) 아이디어를 표현하기에 충분히 가깝다고 생각합니다.
0 없이 출력하고 싶지만 바이트 위치 수가 16의 배수가 아닌 경우 스크립트를 요청하세요.