POSIX에 따르면 OD 유틸리티는 각 바이트를 구분하기 위해 어떤 문자를 사용합니까?

POSIX에 따르면 OD 유틸리티는 각 바이트를 구분하기 위해 어떤 문자를 사용합니까?

Termux를 예로 들면 다음과 같은 결과를 얻을 수 있습니다.

$ od -A n -t x1 /dev/urandom | head -n 2
 e3 5d bf 57 fb 8b 63 06 4a 18 fe 28 73 8f 3e c0
 9f 08 6b d4 2d 38 2c 68 3c 51 83 1e 71 7b 57 2b

보시다시피 값은 공백 문자로 구분됩니다.

SUSv2는 다음과 같이 말했습니다.

입력 데이터는 청크로 조작됩니다… 각 입력 블록은 지정된 순서대로 각 출력 유형에 대한 변환을 사용하여 쓰기 라인당 하나씩 기록됩니다. 입력 블록 크기가 출력 유형 변환의 바이트 수보다 큰 경우... 각 변환의 출력은 하나 이상의 공백 문자로 구분됩니다.

위 인용문에서 불필요한 부분을 "..."로 대체했습니다. 2004년그리고2018POSIX 버전은 위와 동일합니다.

사양은 [:blank:]공백과 LF 대신 탭, "\f", "\r" 및 BRE의 다른 모든 항목을 사용하여 각 바이트, 단어 등을 구분할 수 있음을 의미합니까?

추신. 실제로 저는 POSIXism 내에서 모든 바이트를 모든 라인에 포함시키는 가장 효율적이고 빠른 방법을 생각하고 있습니다. 처음에는 od -A n -t x1 -v | tr ABCDEF abcdef | tr -Cd abcdef0123456789\\n | fold -w 2 | grep .비슷한 것이 더 좋을 거라고 생각했습니다. 그러다가 위에서 언급한 것처럼 POSIX 사양에 문제가 있는 내용이 있다는 것을 발견했습니다. 또한 소수는 어떻습니까? 방법이지만 사용하지 않습니다... od -A n -t u1 -v | tr -Cs 0123456789- '[\n*]' | grep .그래서 어쩌죠? tr -C더 빨라질까요? 그것이 목적입니다.

답변1

연구가 부족해서 죄송합니다. 하지만 방금 이것을 발견했습니다.

POSIX 로케일에서 공백 문자는 탭 또는 공백 문자입니다.

원천.https://pubs.opengroup.org/onlinepubs/007908799/xbd/glossary.html#tag_004_000_031

따라서 ' 및 탭만 구분 기호입니다(POSIX 로케일인 경우, 이 시점에서는 다른 로케일은 신경 쓰지 않습니다). 공백문자로 착각해서 죄송합니다.

관련 정보