对类似于“12,33,66,88,66”的字符串去重

来源:互联网 发布:mac系统10.31 编辑:程序博客网 时间:2024/05/22 12:21

1、方法如下:

function test()
{
    portStr=$1;
    portStr_Num=`echo $portStr | awk -F',' '{print NF}'`;
    returnPort="";
    for((k = 1; k <= $portStr_Num; k++)); do
        everyPort1=`echo $portStr | awk -F',' '{print $kSeg}' "kSeg=$k"`;
        if [ $k -eq $portStr_Num ];then
            if [ "X$returnPort" == "X" ];then
                returnPort="$everyPort1";
            else
                returnPort="$returnPort,$everyPort1";
            fi
        fi
        for((l = k+1; l <= $portStr_Num; l++)); do
            everyPort2=`echo $portStr | awk -F',' '{print $lSeg}' "lSeg=$l"`;
            if [ "$everyPort1" != "$everyPort2" ];then
                if [ $l -eq $portStr_Num ];then
                    if [ "X$returnPort" == "X" ];then
                        returnPort="$everyPort1";
                    else
                        returnPort="$returnPort,$everyPort1";
                    fi
                fi
            else
                break;
            fi
        done
    done
    echo "$returnPort";
}

 

 

2、测试:

a=$(test 22,66,66,66,99);

echo $a;

 

3、如果对命令熟悉,就更简单了:

    echo ",1,3,2,3,1,4" | sed "s/,/\n/g" | sed "/^$/d" | sort -n | uniq | tr '\n' ','|sed 's/,$//g'

   (1)、先将,转成换行
   (2)、删除空行 
   (3)、排序
   (4)、去重复内容
   (5)、将换行重新换成,
   (6)、将最后一个,去掉

0 0
原创粉丝点击