(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は1行ずつ
少なくとも間違ったエンコーディングのために中断されることはありません。
使いやすくするには、次のエイリアスを作成してください。
alias reverse="perl -nle 'print scalar reverse \$_'"