2자마다 문자열을 추가하세요.

2자마다 문자열을 추가하세요.

다음 문자열이 있습니다.

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)를 빈 문자열로 설정하여 문자로 구분합니다. 그런 다음 원하는 문자열 앞에 오는 두 문자마다 인쇄하십시오. 리터럴 백슬래시를 인쇄하려면 백슬래시로 이스케이프 처리하세요.

관련 정보