ファイル内の x'00 から x'40' までの一連の 16 進文字をスペースに置き換えたいと考えています。それらのそれぞれに sed -e 's/\x00//g' を書きたくありません..これを行うより効率的な方法はありますか?
質問する
8612 次
3 に答える
4
環境とsedのバージョンによっては、これでうまくいく場合があります。(タブをいじることは避けますが、スペースを別のスペースに置き換えるだけなので、スペースを避ける理由はありません。)
LANG='' sed 's/[\x00-\x08\x0A-\x40]/ /g'
これにより、sed コマンドの実行中に LANG がクリアされます。たとえば、環境がUTF8の場合、これでいくつかの問題を解決できます。
于 2013-04-12T16:07:16.807 に答える
0
これ:
LC_ALL=C sed 's/[\x00-\x40]/ /g'
またはラフ:
(LC_ALL=C; sed 's/[\x00-\x40]/ /g')
テスト:
alias hxr="perl -ne'for(split){print chr hex}'"
printf '%02X ' `seq 65` | hxr | hd
printf '%02X ' `seq 65` | hxr | LC_ALL=C sed 's/[\x00-\x40]/ /g'; echo
于 2016-05-13T15:56:32.207 に答える
0
tr
の代わりに使用しsed
ます。まず、文字コードを 16 進数から 8 進数に変換する必要があります。0 から 77 の 8 進数が必要だとしましょう。これは次のとおりです。
tr '\0-\77' ' ' < your-input-file
于 2013-04-12T14:58:12.923 に答える