(export LC_ALL=C; xxd -revert -plain <<< 1234abcd | rev | tr -d '\n' | xxd -plain | tr -d '\n') 왜 작동하지 않나요?

(export LC_ALL=C; xxd -revert -plain <<< 1234abcd | rev | tr -d '\n' | xxd -plain | tr -d '\n') 왜 작동하지 않나요?
(export LC_ALL=C; xxd -revert -plain <<< 1234abcd | rev | tr -d '\n' | xxd -plain | tr -d '\n')
rev: stdin: Invalid or incomplete multibyte or wide character

대부분은 cdab3412를 반환합니다.

하지만 반환

rev: stdin: Invalid or incomplete multibyte or wide character

이 문제를 어떻게 해결하나요?

답변1

시스템이 rev바이트 시퀀스를 문자로 처리할 수 없다면 Perl을 사용해 보십시오.

$ (export LC_ALL=C; xxd -revert -plain <<< 1234abcd | perl -pe '$_ = reverse $_' | xxd -plain)
cdab3412

개행 제거를 생략했습니다. 불필요한 것 같습니다.

답변2

echo 1234abcd | grep -o .. | tac | paste -sd '' -

cdab3412

답변3

사용 revsed:

$ rev <<< 1234abcd | sed -E 's/(.)(.)/\2\1/g'
cdab3412

그리고 awk:

$ awk -F '' '{ for(i=NF-1;i>0;i-=2) printf "%s", $i $(i+1) } END{ print "" }' <<< 1234abcd
cdab3412

답변4

rev다음 줄로 바꾸십시오 .

perl -nle 'print scalar reverse $_'

원천:Perl은 한 줄씩

적어도 잘못된 인코딩으로 인해 중단되지는 않습니다.

더 쉽게 사용하려면 다음 별칭을 만드세요.

alias reverse="perl -nle 'print scalar reverse \$_'"

관련 정보