1

制御文字(ASCII 0-31)を含む可能性のあるファイルを解析しています。ここで、これらの各制御文字を16進表現のASCIIコードに置き換えたいと思います。私が考えていることのかなり単純な例:

$ echo -e "a\011b" | sed -e 's/\o11/\\x09/g'
a\x09b

\011これにより、タブ( )がに変換される\x09ため、はにa<tab>bなりa\x09bます。

明らかに、32個のパラメーターを使用できます-eが、それは悪いことだと思います。これに対する一般的なアプローチはありますか?

\nところで、残りが残っていれば問題ありません\nsed必須ではありません。

4

1 に答える 1

2

私はPerlを使います。タブは実際には8ではなく9であることに注意してください。値を変更しようとしている場合、これは正しくありませんが、エンコードしているだけの場合は、これでうまくいくはずです。

echo -e "a\011b" | perl -lpe 's/[\0-\037\177]/sprintf "\\x%02x", ord $&/ge'
于 2012-04-13T17:07:05.593 に答える