gpt4 book ai didi

linux - 在不使用 awk 的情况下将对列表转换为 shell 中的表

转载 作者:太空宇宙 更新时间:2023-11-04 09:08:22 24 4
gpt4 key购买 nike

我有一个制表符分隔的成对列表,如下所示:

apple  yellow
orange green
apple red
pear blue
apple yellow
apple yellow

我想使用 Linux 命令行工具将其转换为表格:

       yellow green red blue
apple 3 0 1 0
orange 0 1 0 0
pear 0 0 0 1

我可以用最少的手写脚本来做到这一点吗?

注意:我知道如何编码,谢谢,问题是关于预先存在的工具,可能使用最小脚本胶水.和 awk 程序,除非它们很短,就此而言,算作“脚本”。

注意 2:这是一个学习问题。我不太关心解决方案是短还是长(虽然更短更好)。我想学习解决这个问题的其他方法。

如果我想以最快的方式解决这个问题,我不会在这里问这个问题,我会花 30 秒用我最擅长的语言写三行。

最佳答案

在 awk 中:

awk '{num[$1,$2]++; fruits[$1]=1; colors[$2]=1}END{for(i in fruits) {for(j in colors) printf("%d ", num[i,j]); printf("\n");}}'

附言。作为事后的想法...您可以查看 join 实用程序。与按字段计数配对可能会成功。但我保证它会更毛茸茸。

PPS。我会在这里添加它,因为评论框太局促了。Alexander,你需要一些东西在 POSIX 系统上运行。任务中涉及一些逻辑。无论是放入工具脚本,还是包含多个命令的长管道中 - 数量大致保持不变。由于 awk 旨在生成报告,因此它是这种情况下的好工具。
基本上,您没有太多方法来格式化文本 - 它是 printf 实用程序/内置或 awk。在前一种情况下,它意味着脚本中有大约三行,还有更多行来产生结果。所以我认为没有更短的方法。但从我有限但长期的经验来看,这是一种理论。我也想知道一个更简单的方法,如果有的话,我也想学习:)

关于linux - 在不使用 awk 的情况下将对列表转换为 shell 中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5003617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com