当前位置: 首页 > 面试题库 >

如何从Bash中的数组获取唯一值?

商棋
2023-03-14
问题内容

我和这里的问题差不多。

我有一个包含aa ab aa ac aa ad等的数组。现在,我想从该数组中选择所有唯一元素。思想,这将是简单的用sort | uniqsort -u因为他们在其他问题中提到,但没有在数组中改变…的代码是:

echo `echo "${ids[@]}" | sort | uniq`

我究竟做错了什么?


问题答案:

有点hacky,但是应该这样做:

echo "${ids[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '

要将排序后的唯一结果保存回数组,请执行数组分配:

sorted_unique_ids=($(echo "${ids[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))

如果您的外壳支持herestrings(bash应该),则可以echo通过将其更改为以下内容来节省进程:

tr ' ' '\n' <<< "${ids[@]}" | sort -u | tr '\n' ' '

输入:

ids=(aa ab aa ac aa ad)

输出:

aa ab ac ad

说明:

  • "${ids[@]}"-使用shell数组的语法,无论是作为一部分echo还是在此处使用。该@部分的意思是“数组中的所有元素”
  • tr ' ' '\n'-将所有空格转换为换行符。因为您的数组被shell视为一行上的元素,并用空格分隔;并且因为sort期望输入在单独的行上。
  • sort -u -仅排序和保留唯一元素
  • tr '\n' ' ' -将我们先前添加的换行符转换回空格。
  • $(...)- 命令替换
  • 除了:tr ' ' '\n' <<< "${ids[@]}"是一种更有效的方法:echo "${ids[@]}" | tr ' ' '\n'


 类似资料:
  • 问题内容: 如何获得数组中唯一值的列表?我是否总是必须使用第二个数组,或者是否有类似于JavaScript中Java哈希表的东西? 我将仅使用 JavaScript 和 jQuery 。不能使用其他库。 问题答案: 由于我在@Rocket答案的注释中继续进行了讨论,因此我不妨提供一个不使用任何库的示例。这需要两个新的原型函数,并且 为了提高可靠性,可以用MDN的垫片代替,并检查每个元素的值是否等于

  • 我有以下数组 我想从这个数组中得到唯一的值。所以我希望我的结果是这样的 我使用了数组唯一函数,但无法得到结果 如果我有两个索引,这是有效的,但是对于多个索引呢?

  • 我有一个包含会员信息的服务。这里的一个变量是团队字符串。 在我的组件中,我调用服务方法将信息放在变量中,然后在组件中显示它。 我想用服务中团队的唯一列表填充组件中的变量“teams”。这应该考虑到编写(因此我将使用toUpperCase()。 我的服务: 我的组成部分:

  • 我有一张银行账户表: 它在列中有一些JSON: 我使用jsonb\u array\u元素来获取一个用户的帐户列表: 太好了。但我如何让每一行都有一个唯一的id呢?我想将每一行映射到一个hibernate对象,但我很难做到这一点,因为我找不到让每一行都具有唯一id的方法。

  • 问题内容: jQuery.unique允许您获取数组的唯一元素,但是文档说该函数主要供内部使用,并且仅对DOM元素起作用。另一个SO响应说该函数可以在数字上使用,但是此用例不一定是将来的证明,因为在文档中未明确说明。 鉴于此,是否存在“标准” jQuery函数,用于仅访问数组中的唯一值(特别是整数之类的基元)?(显然,我们可以使用函数构造一个循环,但是我们是jQuery的新手,并且想知道是否为此使

  • 问题内容: 我有并想要一些函数,调用的结果是新数组。 问题答案: 看一眼