(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 \$_'"