![(export LC_ALL=C; xxd -revert -plain <<< 1234abcd | rev | tr -d '\n' | xxd -plain | tr -d '\n') 왜 작동하지 않나요?](https://linux55.com/image/177081/(export%20LC_ALL%3DC%3B%20xxd%20-revert%20-plain%20%26lt%3B%26lt%3B%26lt%3B%201234abcd%20%7C%20rev%20%7C%20tr%20-d%20'%5Cn'%20%7C%20xxd%20-plain%20%7C%20tr%20-d%20'%5Cn')%20%EC%99%9C%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EB%82%98%EC%9A%94%3F.png)
(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
사용 rev
및 sed
:
$ 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 \$_'"