0

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

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

结果是:

美国广播公司

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

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

结果是:

美国广播公司

新键是:AABBCC

如何获取 KEY 的更新版本?

4

2 回答 2

4

尝试这个:

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
于 2014-08-31T13:54:29.933 回答
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

于 2014-08-31T13:57:59.950 回答