删除字符串bash脚本中的重复字符

时间:2014-08-31 13:22:40

标签: string bash shell bash4

我有这段代码删除字符串中的重复字符:

awk -v FS="" '{
    for(i=1;i<=NF;i++)str=(++a[$i]==1?str $i:str)
}
END {print str}' <<< "AABBCC"

结果是:

  

ABC

这正是我想要的;但问题是,当我传递一个变量时,它会删除重复的字母,但它不会更新变量的值。例如:

KEY=AABBCC
awk -v FS="" '{
    for(i=1;i<=NF;i++)str=(++a[$i]==1?str $i:str)
}
END {print str}' <<< "$KEY"
echo the new key is: $KEY

结果是:

  

ABC

     

新密钥是:AABBCC

如何获取KEY的更新版本?

2 个答案:

答案 0 :(得分:3)

试试这个:

KEY=AABBCC
KEY=$(awk -v FS="" '{ for(i=1;i<=NF;i++)str=(++a[$i]==1?str $i:str) } END {print str}' <<< "$KEY")
echo $KEY

输出:

ABC

答案 1 :(得分:2)

您需要将awk命令的输出分配给变量,如下所示:

KEY=AABBCC
KEY=$(awk -v FS="" '{
    for(i=1;i<=NF;i++)str=(++a[$i]==1?str $i:str)
}
END {print str}' <<< "$KEY")
echo the new key is: $KEY

会导致 the new key is: ABC