如果我在 bash 中有一个列表
L="11 22 11 33 22 44"
Run Code Online (Sandbox Code Playgroud)
有没有一种干净的方法可以到达 "11 22 33 44" ?
单程:
$ 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)。
其他一些编程语言中的常见模式是将每个值作为“键”存储在哈希或字典或关联数组中,并依靠实现来保持哈希键唯一。
\n\ndeclare -A items=()\nfor item in $L; do\n items[$item]=1\ndone\nL=${!items[*]}\nRun Code Online (Sandbox Code Playgroud)\n\n(不幸的是,bash实现比 慢大约 2\xc3\x97 sort -u。)
| 归档时间: |
|
| 查看次数: |
17603 次 |
| 最近记录: |