我有一个字符串(例如3122323123123
)并想替换任何1->ax
,2->by
和3->cz
.
我如何在 bash 中做到这一点?
我从字符集开始[123]
并尝试使用“sed”,但不知道如何编写替换表达式?
正则表达式在这里不是适合您的工具。您的问题中没有任何内容需要任何正则表达式。
您没有指定您的语言,但如果您使用 PHP,您可以使用该函数strtr()
,它完全符合您的要求。
老好人str_replace()
也可以做你想做的事,因为它可以接受用于搜索/替换参数的数组。
大多数其他语言应该具有类似的功能,这意味着您不需要正则表达式。
查看标准tr实用程序。
% echo "3122323123123" | tr "123" "abc"
cabbcbcabcabc
如果你想用多个字符替换一个字符,你可以使用 sed 进行每个替换:
% echo "3122323123123" | sed -e "s/1/ax/g" -e "s/2/by/g" -e "s/3/cz/g"
czaxbybyczbyczaxbyczaxbycz
在c#中
string input = "3122323123123";
string output = intput.Replace('1','a').Replace('2','b').Replace('3','c');
以 Perltr///
为例:
$ echo "3122323123123" | perl -pe "tr/123/abc/"
cabbcbcabcabc