dd if=/dev/zero of=file.dd bs=1 count=1
테스트 목적 으로 1바이트 NULL 파일을 만들었습니다 . 다음 테스트에서 이상한 결과를 얻었습니다.
dd if=file.dd |
sed 's/\x5e/X/' |
xxd
00000000: 5800 X.
NULL 데이터 스트림에서 얻는 방법은 무엇입니까 sed
?x5E
감사해요.
답변1
정규식 ^
특수 문자는 "줄 시작"에 대해 너비가 0인 일치이며 입력 시작 부분에 암시적 줄이 있습니다. 따라서 최소한 한 줄로 구성된 것으로 간주되는 모든 입력 및 sed
(또는 대부분의 정규식 도구)은 이를 다음과 같이 처리합니다.
$ printf "\0\0\0" | od -c
0000000 \0 \0 \0
0000003
$ printf "\0\0\0" | sed 's/^/Y/' | od -c
0000000 Y \0 \0 \0 \n
0000005
$ printf "\0\0\0" | perl -ple 's/^/Y/' | od -c
0000000 Y \0 \0 \0 \n
0000005
GNU sed
는추가적인 합병증치료는 \x5e
다음과 동일합니다 ^
.
$ printf "\0\0\0" | gsed 's/^/Y/' | od -c
0000000 Y \0 \0 \0
0000004
$ printf "\0\0\0" | gsed 's/\x5e/Y/' | od -c
0000000 Y \0 \0 \0
0000004
^
리터럴을 일치시키려면 취급하지 않거나 특별하게 취급하지 않는 다른 형식을 사용해야 합니다 .^
\x5e
$ printf "\0\x5e\0" | gsed 's/[=\x5e]/Y/' | od -c
0000000 \0 Y \0
0000003
$ printf "\0\x5e\0" | perl -pe 's/\x5e/Y/' | od -c
0000000 \0 Y \0
0000003