私の質問に対する答えは、SO上に存在する可能性がありますが、正直に見て、それを見つけることはできません。私が得た最も近いものはthis Q&Aでしたが、私のマシン(OSX 10.7.5、bash
を使用)で結果を再現できませんでした。sedの16進コード - OSXで予期したとおりに動作しない
ここでは、本質的に縮小された問題です。sed
は、\xnn
(たとえば\x41
はA
)を16進文字として解釈できません。六角以来、予想通り - ので、OSとその機能は私の進コードを理解して... B
で
echo -e '\x41' | sed 's/A/B/'
結果 -
echo -e '\x41'
A
での結果:どのような私に特にナットを駆動するのはこれですそれを
しかし
echo A | sed 's/\x41/B/'
を見た
sed
前にコードが
A
に変換し、
A
で
結果 - 私はA
echo A | LANG='' sed 's/\x41/B/'
同上...で
echo A | sed 's/[\x41]/B/'
結果で
echo A | LANG='C' sed 's/\x41/B/'
結果のようなものを試してみましたB
を期待しているだろうA
しかし... B
で
echo A | sed 's/[\x41-\x41]/B/'
結果???
私は完全に愚かですか?または、実際にはsed
と奇妙な何かがありますか?明らかに範囲内の16進コードを解釈することはできますが、1文字として解釈することはできません。私は何が欠けていますか?
に注意してください - 私は上記はOSX上で、それはある方法を振る舞い、そしてどこでもsed
文字列の単一進コードを挿入することを可能にする方法を、されている理由の両方が、説明の答えを探していますプラットフォーム。これは、s/
コマンドの「検索」と「置換」の両方の部分を意味します。私が明らかに示しているので、[\ xnn- \ xnn]で1文字を検索することができます。それは私が探している答えではありません。
ありがとうございます!
ありがとうございます。 "sedが16進コードをしない"場合、どのように私の最後の例を説明しますか?* sedのような見た目は範囲式の16進数を理解しています... – Floris
"私の最後の例をどう説明しますか?答え、以下... – Floris
sed式の代替部分(2番目の部分)で16進符号化を使用する方法について詳しく説明していますか?私は試しました: 'echo -ne 'a \ x0db' | sed $ 's/\ x0d/\ x0a/g' |ヘックスダンプ-C'と 'echo -ne 'a \ x0db' | sed $ 's/\ x0d/\\ x0a/g' | hexダンプ-C'を無駄に使います。そうでなければ、これは私が探していたものでした。 – mpettis