私の質問への答えは SO にあるかもしれませんが、正直なところ、一生懸命探しても見つかりません。最も近いのはこの Q&Aでしたが、自分のマシン (OSX 10.7.5、 を使用) で結果を再現できませんでしたbash
。
これが問題の本質です: を16進文字としてsed
解釈でき\xnn
ません。特に私を夢中にさせているのはこれです:\x41
A
echo -e '\x41'
その結果A
-OSとその機能は私の16進コードを理解します...
echo -e '\x41' | sed 's/A/B/'
結果はB
- 16 進コードが表示されるA
前に変換されsed
たため、予想どおり
しかし
echo A | sed 's/\x41/B/'
結果A
- 私は期待していたでしょうB
私は次のようなことを試しました
echo A | LANG='C' sed 's/\x41/B/'
結果はA
echo A | LANG='' sed 's/\x41/B/'
同上...
echo A | sed 's/[\x41]/B/'
結果はA
しかし...
echo A | sed 's/[\x41-\x41]/B/'
結果はB
???
私は完全に愚かですか?それとも本当に何か変sed
ですか?どうやら範囲内の16進コードを解釈できますが、1文字として解釈することはできません。私は何が欠けていますか?
注意してください - OSX プラットフォームで、上記の動作がなぜそうなのかを説明する回答と、文字列内の任意の場所に単一の 16 進コードを挿入できるようにする方法の両方を説明する回答を探しています。これは、コマンドの「検索」部分と「置換」部分の両方を意味します。[\xnn-\xnn] を使用して単一の文字を検索できることを明らかに示したので、それは私が探している答えではありません。sed
s/
前もって感謝します!