我正在编写一个命令,用于在 sed 中将所有数字 0-9 替换为其对应的字母。我知道我做错了什么,但 sed 并没有将替换正则表达式解释为字符串文字以外的任何东西。
我使用的命令是sed -r 's/[0-9]/[A-J]/g' log > ~/output.txt
对我来说这似乎很简单,但我被困了大约一个小时。我收到的输出只是用字符串“[AJ]”替换了 0-9
答案1
作为替代,只有匹配(左侧)是正则表达式。替代品或多或少只是一个文字字符串(带有一些反斜杠扩展)——它是不是正则表达式。
您想要音译,而不是替换,因此替换s
为y
:
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