我有一个字符串(例如3122323123123
),想要替换所有1->ax
,2->by
和3->cz
。
我如何在bash中这样做?
我从字符集[123]
开始并尝试使用“sed”,但不知道如何编写替换表达式?
答案 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