0

我有一个字符串(例如3122323123123并想替换任何1->ax,2->by3->cz.

我如何在 bash 中做到这一点?

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

4

4 回答 4

3

正则表达式在这里不是适合您的工具。您的问题中没有任何内容需要任何正则表达式。

您没有指定您的语言,但如果您使用 PHP,您可以使用该函数strtr(),它完全符合您的要求。

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

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

于 2013-10-18T15:27:01.567 回答
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
于 2013-10-18T19:00:42.477 回答
1

在c#中

string input = "3122323123123";
string output = intput.Replace('1','a').Replace('2','b').Replace('3','c');
于 2013-10-18T15:31:45.510 回答
1

以 Perltr///为例:

$ echo "3122323123123" | perl -pe "tr/123/abc/"    
cabbcbcabcabc
于 2013-10-18T18:58:33.810 回答