Linux BASH - 替换多次出现的char,省略单次出现

时间:2014-03-10 16:08:46

标签: string bash replace character

专家: 这有点难以解释。我需要用一些其他字符替换多次出现的字符(我知道这可以通过使用sed或tr来完成)。棘手的部分是我需要保持字符的单次出现。

示例,用“;”替换多次出现的“_”:

这就是我所拥有的: 的 “THIS_ _ __ _ __ _ ___ is_a ____字符串”

这就是我需要的: 的 “这; is_a;字符串”

有没有办法做到这一点?

提前致谢

1 个答案:

答案 0 :(得分:2)

嗯,你可以在下面做:

echo "This___________is_a____string" | sed 's/_\{2,\}/;/g'

输出:

This;is_a;string

琐碎的部分是{2,}量词,意味着匹配任何_ 2或更长,即。它将保持单_不变。