Linux 删除重复字符而不使用SED反向引用

Linux 删除重复字符而不使用SED反向引用,linux,sed,Linux,Sed,假设我们有一个包含 HHEELLOO HHYYPPOOTTHHEESSIISS 我们想删除重复的字符。据我所知,我们可以用 s/\([A-Z]\)\1/\1/g 这是一个家庭作业问题,教授说他希望我们在没有反向引用或扩展正则表达式的情况下尝试这些练习。这一次可能吗?如果有人能给我指出正确的方向,我将不胜感激,谢谢 这里有一种方法: s/AA/A/g s/BB/B/g ... s/ZZ/Z/g 作为一个班轮: sed 's/AA/A/g; s/BB/B/g; ...' 唯一合理的方法是为作

假设我们有一个包含

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

s/\([A-Z]\)\1/\1/g
这是一个家庭作业问题,教授说他希望我们在没有反向引用或扩展正则表达式的情况下尝试这些练习。这一次可能吗?如果有人能给我指出正确的方向,我将不胜感激,谢谢

这里有一种方法:

s/AA/A/g
s/BB/B/g
...
s/ZZ/Z/g
作为一个班轮:

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

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

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

如果这不是您想要的,请编辑您的问题,以显示更具代表性的示例输入和预期输出。

这是一个处理大写和小写字母的长表达式——但我喜欢您发人深省的教学,而不是做家庭作业。谢谢!我害怕这样做,因为这似乎是做一些超级简单的事情的一条漫长的道路,但我想这是唯一一条有限制的道路。@Lucero如果扩展正则表达式没有打开,就有必要避开parens。
$ sed 's/\(.\)./\1/g' file
HELO
HYPOTHESIS