删除重复字符而无需使用SED进行反向引用

时间:2017-01-28 00:55:33

标签: linux sed

我们说我们有一个包含

的文件
HHEELLOO
HHYYPPOOTTHHEESSIISS

我们要删除重复的字符。据我所知,我们可以用

来做到这一点
s/\([A-Z]\)\1/\1/g

这是一个家庭作业问题,教授说他希望我们在没有反向引用或扩展正则表达式的情况下尝试练习。这可能吗?如果有人能指出我正确的方向,我将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:2)

唯一合理的方法是使用正确的工具来完成工作,在这种情况下tr

$ tr -s 'A-Z' < file
HELO
HYPOTHESIS

如果您打算将sed用于该特定问题,那么它只是:

$ sed 's/\(.\)./\1/g' file
HELO
HYPOTHESIS

如果那不是您想要的,那么请编辑您的问题以显示更具真实代表性的样本输入和预期输出。

答案 1 :(得分:1)

这是一种方式:

s/AA/A/g
s/BB/B/g
...
s/ZZ/Z/g

作为一个单行:

sed 's/AA/A/g; s/BB/B/g; ...'