用[AJ]代替[0-9]不适用于sed


11

我正在使用一个命令,用sed中的相应字母替换所有数字0-9。我知道我做错了什么,但sed并未将替换正则表达式解释为字符串文字。

我正在使用的命令是 sed -r 's/[0-9]/[A-J]/g' log > ~/output.txt

对我来说,这似乎很简单,但是我已经坚持了大约一个小时。我收到的输出仅将0-9替换为字符串“ [AJ]”

Answers:


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 18-10-22,2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.