如何用一个字符替换多个字符?

3
如果遇到重复字符,必须替换为单个字符。例如,在文件中有以下内容:????aca,我必须将其替换为?aca。我尝试使用tr命令,但无法正常工作。
3个回答

6

使用反向引用, 看起来很容易:

sed 's/\(.\)\1\+/\1/g' infile

谢谢,但是这个命令正在替换所有遇到的重复字符,但我只需要替换“?”而已,我没有明确说明这一点。 - user3091715
2
@user3091715:然后将 . 替换为 ?(如果对于您的正则表达式它是特殊字符,则替换为 \?)。 - Olivier Dulac

1
基于你对 ? 的限制。
sed 's/[?]\{2,\}/?/g' YourFile

也符合POSIX标准。

1
如果您想截断连续运行的一个特定字符,tr -s可以实现这一点。
tr -s '?' <file >file.new

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接