如何获取 bash 列表中的唯一项目?

Tra*_*ear 3 linux bash

如果我在 bash 中有一个列表

L="11 22 11 33 22 44"
Run Code Online (Sandbox Code Playgroud)

有没有一种干净的方法可以到达 "11 22 33 44" ?

Gur*_*uru 7

单程:

$ L="11 22 11 33 22 44"
$ L=$(echo $L | tr ' ' '\n' | sort -nu)    
$ echo $L
11 22 33 44
Run Code Online (Sandbox Code Playgroud)

使用 tr 将数字拆分为单独的行,然后使用 sort 对数字进行排序(-n)并删除重复的数字(-u)。


use*_*686 5

其他一些编程语言中的常见模式是将每个值作为“键”存储在哈希或字典或关联数组中,并依靠实现来保持哈希键唯一。

\n\n
declare -A items=()\nfor item in $L; do\n    items[$item]=1\ndone\nL=${!items[*]}\n
Run Code Online (Sandbox Code Playgroud)\n\n

(不幸的是,bash实现比 慢大约 2\xc3\x97 sort -u。)

\n