다음 문자열이 있습니다.
AAAACE21
다음과 같이 변환하고 싶습니다. 기본적으로 2자마다 시작 부분에 추가하고 \xAA\xAA\xCE\x21
싶습니다 . \x
어떤 이유에서인지 문자열을 반복해서 추가하려고 할 때마다 문자열이 \
끝나지 않는 것 같습니다. 이것을 할 수 있는 라이너가 있나요?
답변1
$ echo AAAACE21 | sed 's/../\\x&/g'
\xAA\xAA\xCE\x21
존재하다 sed
,.
모든 문자를 나타냅니다...
두 문자와 일치합니다. 표현을 입력 \\
하고 일치하는 콘텐츠로 바꿔야 하는 경우가 많습니다.\
&
g
나타냅니다G즉, 가능할 때마다 가능한 한 많이 수행하십시오. 이것이 없으면 처음 두 문자만 얻게 됩니다:
$ echo AAAACE21 | sed 's/../\\x&/'
\xAAAACE21
답변2
awk를 사용하는 솔루션은 다음과 같습니다.
awk -v FS='' '{for(i=1;i<NF;i+=2) printf "\\x%s%s",$i,$(i+1)}END{printf "\n"}' <<<"AAAACE21"
\xAA\xAA\xCE\x21
필드 구분 기호( FS
)를 빈 문자열로 설정하여 문자로 구분합니다. 그런 다음 원하는 문자열 앞에 오는 두 문자마다 인쇄하십시오. 리터럴 백슬래시를 인쇄하려면 백슬래시로 이스케이프 처리하세요.