删除linux中列表变量中的重复项

时间:2014-10-23 16:00:01

标签: linux list grep uniq

我遇到了麻烦。

给出一个列表,如LIST =" a b c。 b c。 d"我想以OUTPUT =" a b c结束。 d"

基本上我想删除uniq命令之类的重复项目,但不重新排序列表。所以使用排序我不是一个选择。

OUTPUT=
for term in $LIST
do
if [[ -n $( echo "$OUTPUT" | grep -w $term ) ]]; then
echo "$term in output already"
else
OUTPUT="$OUTPUT $term "
echo "$term added to output"
fi
done
echo -e $OUTPUT

此选项的问题。(点)被识别为通配符,因此它与输出中已有的任何内容匹配。我想知道是否有更聪明的方法来做这个或者是否有一种简单的方法来处理点(。)

1 个答案:

答案 0 :(得分:0)

 LIST="a b c . b c . d"
 i=0
 for f in $LIST ; do 
    echo -e "$i\t$f"
    i=$(($i+1))
 done | sort -u -k 2 | sort -n | cut -f2