相关疑难解决方法(0)

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

我和这里的问题差不多.

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

echo `echo "${ids[@]}" | sort | uniq`
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

linux arrays bash unique

75
推荐指数
11
解决办法
7万
查看次数

寻求参考以理解一种模式"!_ [$ 0] ++"

是一个AWK新手,使用移植到Windows(GNXUtils)和gawk而不是awk的GNU实用程序.这个论坛上的解决方案就像绝对的魔术一样,我试图找到一个我可以阅读的来源,以更好地理解该解决方案中提供的模式表达.

UNIX shell脚本中从列表中选择唯一值或不同值时, Dimitre Radoulov的答案提供以下代码

zsh-4.3.9[t]%   awk '!_[$0]++' file
Run Code Online (Sandbox Code Playgroud)

作为选择具有重复和混杂元素的列表元素的解决方案,仅列出每个元素一次.

我以前曾经sort | uniq这样做过,这对小型测试文件很有用.对于我的实际问题(从2006年4月的印度国家证券交易所16天的档案订单研究数据中提取公司符号列表,在多个文件中提供了12,000多万条记录),分类负担变得过大.uniq只消除了相邻的重复项.

我使用了复制上面的Win-GNU gawk行

C:\Users\PAPERS\>  cat ..\Full*_Symbols.txt | gawk "!_[$0]++"  | wc -l

946
Run Code Online (Sandbox Code Playgroud)

建议有9,900多万条记录涉及946家不同的公司,这是一个非常合理的答案.在我的适度Windows机器上花了不到5分钟,经过几个小时的尝试SORT让我失望.

看了我所有的awk文本并在网上搜索了一下,而对于模式的一部分,为什么它工作的解释是明确的(!作为NOT,$0是整个当前记录),对于_我无法找到的下划线任何解释,并++在示例中仅作为"用1更新计数器".

将非常感谢任何适当的文本或网络参考,以充分理解这个例子,因为我认为它也将帮助我在其他相关的情况下.谢谢.最好,

regex sorting awk

6
推荐指数
2
解决办法
522
查看次数

标签 统计

arrays ×1

awk ×1

bash ×1

linux ×1

regex ×1

sorting ×1

unique ×1