我有一个字符串
cabbagee
我想删除重复的字符。 如果我使用 tr -s 它将删除序列中的重复字符。但我想要的输出是
cabge
如果有人能帮助我,我将不胜感激。
提供的答案是正确的,但我无法使用 awk,所以我使用了:
#!/usr/bin/bash
key=$1
len=${#key}
mkey=""
for (( c=0; c<len; c++ ))
do
tmp=${key:$c:1}
echo $mkey | grep $tmp >/dev/null 2>&1
if [ "$?" -eq "0" ]; then
echo "Found $tmp in $mkey"
else
mkey+=$tmp
fi
done
echo $mkey
最佳答案
你会使用 awk
吗?
awk -v FS="" '{
for(i=1;i<=NF;i++)str=(++a[$i]==1?str $i:str)
}
END {print str}' <<< "cabbagee"
cabge
其他几种方式:
gnu awk
:
awk -v RS='[a-z]' '{str=(++a[RT]==1?str RT: str)}END{print str}' <<< "cabbagee"
cabge
awk -v RS='[a-z]' -v ORS= '++a[RT]==1{print RT}END{print "\n"}' <<< "cabbagee"
cabge
gnu sed
和 awk
:
sed 's/./&\n/g' <<< "cabbagee" | awk '!a[$1]++' | sed ':a;N;s/\n//;ba'
cabge
关于regex - 如何从 Bash 中的字符串中删除重复字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23402740/