我一直在研究在unix中对输入txt文件进行排序,但遇到了一些我喜欢的建议。
Product,color,stock
apple,red,400
apple,green,400
apple,yellow,400
grape,purple,500
banana,yellow,120
说这是我的输入文件。它只是一个文本文件,但我想稍微整理一下我的信息。
我首先使用awk将我的产品分组在一起......
awk -F '[,]' 'NR >= 1 {b[$1];}
如果我将它打印出来,这将留下以下内容......
apple
grape
banana
但如果我想要包含其他信息,例如该行中列出的所有产品颜色,我会遇到问题。如果我想要那个' b'索引数据进入另一个数组我将如何做到这一点(因为我似乎无法从awk代码外部访问' b')?认为以下方法可行,但没有运气。
awk -F '[,]' 'NR >= 1 {b[$1];}END{for (i in b) productArray+=(b[i])}'
答案 0 :(得分:0)
awk并没有真正拥有这样的嵌套列表。如果您希望数据进入不同的数组(数组j
),那么您可以这样做:
cat test.txt |awk -F '[,]' 'NR > 1 { b[$1]=$2} END {for (x in b) { j[x]; print x}}'
如果您想将第二列折叠为基于第1列的唯一行,您可以执行以下操作:
$ cat test.txt |awk -F ',' 'NR > 1 { if ($1 in b) { b[$1] = b[$1] FS $2} else { b[$1]=$2}} END {for (x in b) { print x,": " b[x] }}'
apple : red,green,yellow
banana : yellow
grape : purple