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

标签 linux list grep uniq

我在这方面遇到了麻烦。

给定一个列表,例如 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/

相关文章:

python - 测试列表和元组中的字符串包含

regex - [A-Z] 是什么意思 [A-Za-z]?

linux - 在不使用双引号的情况下搜索包含当前日期的日志文件

linux - 使用通配符和 grep

linux - 让 HAProxy 检查后端服务器状态?

Python文件输出添加奇怪的字符

python - 如果文件名是字符串列表的子字符串,则使用父字符串重命名文件

返回列表中向量的特定元素

linux - Bash 字符串连接并获取内容

linux - 从命令行将图像复制到剪贴板