正则表达式:将一个字符集替换为另一个

时间:2013-10-18 15:18:51

标签: regex bash sed

我有一个字符串(例如3122323123123,想要替换所有1->ax2->by3->cz

我如何在bash中这样做?

我从字符集[123]开始并尝试使用“sed”,但不知道如何编写替换表达式?

4 个答案:

答案 0 :(得分:3)

正则表达式不适合你。你的问题中没有任何内容需要任何正则表达式。

您没有指定您的语言,但如果您使用的是PHP,则可以使用功能strtr()来完成您正在寻找的功能。

好老str_replace()也可以做你想做的事情,因为它可以接受搜索/替换参数的数组。

大多数其他语言应具有相似的功能,这意味着您不需要正则表达式。

答案 1 :(得分:3)

查看标准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

答案 2 :(得分:1)

在c#

string input = "3122323123123";
string output = intput.Replace('1','a').Replace('2','b').Replace('3','c');

答案 3 :(得分:1)

使用Perl tr///例如:

$ echo "3122323123123" | perl -pe "tr/123/abc/"    
cabbcbcabcabc