我在这方面遇到了麻烦。
给定一个列表,例如 LIST="a b c . b c . d"我想最终得到 OUTPUT="a b c . d"
基本上我希望像 uniq 命令一样删除重复的项目,但不重新排序列表。所以使用 sort i 不是一个选择。
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
此选项的问题是 .(点)被识别为通配符,因此它与输出中已有的任何内容匹配。我想知道是否有更聪明的方法来做到这一点,或者是否有一种简单的方法来处理点(.)
最佳答案
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
关于linux - 删除Linux中列表变量中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26532287/