String Bash-从输出中的集合中删除重复字符

String Bash-从输出中的集合中删除重复字符,string,bash,shell,sed,duplicate-removal,String,Bash,Shell,Sed,Duplicate Removal,情景1: 我有一个包含此字符串的变量: output="abdh748mdn78##j*&#" 特殊字符属于一个称为特殊字符集的集合 specialchars='@#$%&*+-=' 圣诞节我只想 1) 保留一块特殊的炭,丢弃其余的 2) 从字符串中多次删除该字符,或者选择一个特殊字符并丢弃其余字符 情景2: output="a#bdh#748m#" Speicalchar="$char" [where $char is '#' random

情景1: 我有一个包含此字符串的变量:

    output="abdh748mdn78##j*&#"
特殊字符属于一个称为特殊字符集的集合

    specialchars='@#$%&*+-='
圣诞节我只想

1) 保留一块特殊的炭,丢弃其余的

2) 从字符串中多次删除该字符,或者选择一个特殊字符并丢弃其余字符

情景2:

    output="a#bdh#748m#"

    Speicalchar="$char" [where $char is '#' randomly selected from set- look above]
注意有多个#

只需要去掉复制品并保留一个。 然后返回$output

我试过:

    echo $stringout | sed 's/\([@#$%&*+-=]\)\1/\1/g' 
在stackx上找到的,但不起作用


需要保持bash(只能使用bash utils)。

您的输入和预期输出是什么?预期输入-场景2:a#bdh#748m#输出-a#bdh748m。对于场景1,输入abdh748mdn78#j*&#输出-abdh748mdn78#j。为什么不能将
*
&
保留在第二个字段中。因为它们属于特殊字符集[@$%&*+-=]。规格是只显示集合中的一个字符,并且没有重复。可能的重复