[0-9]を[AJ]に置き換えてsedで動作しない


11

私は、0から9のすべての数字を、sedの対応する文字に置き換えるコマンドを作成しています。私は何か間違ったことをしていることは知っていますが、sedは置換正規表現を文字列リテラル以外のものとして解釈していません。

私が使用しているコマンドは sed -r 's/[0-9]/[A-J]/g' log > ~/output.txt

それは私にはかなり簡単に思えますが、私は約1時間それにこだわっています。私が受け取る出力は、文字列「[AJ]」で0-9を置き換えます

回答:


38

置換では、一致(左側)のみが正規表現です。交換は(いくつかのバックスラッシュ拡張付き)多かれ少なかれ、単に文字列リテラルである-それはだ正規表現ではありません

あなたは音訳、ない置換をしたいので、交換するsy

echo 34031445 | sed 'y/0123456789/ABCDEFGHIJ/'

sedはの範囲を使用できませんyが、Perlは次のことができます。

echo 34031445 | perl -pe 'y/0-9/A-J/'

または単に使用するtr

echo 34031445 | tr 0-9 A-J

12
同意した。tr仕事のための最も簡単でおそらく最速のツールです。
sdkks
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.