我有这段代码删除字符串中的重复字符:
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的更新版本?
答案 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