大佬教程收集整理的这篇文章主要介绍了使用awk对字段进行排序和排列,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在制表符分隔表中有大量数据,只有两个字段(如下所示):
1101\t7778 1101\t7755 1101\t8889 1101\t6789 2300\t1220 4000\t2333 4000\t7555 4000\t9000 4000\t1111
当字段匹配时,我想最终将第二个字段附加到行上.期望的输出是:
1101\t7778\t7755\t8889\t6789 2300\t1220 4000\t2333\t7555\t9000\t1111
如果可能的话,我喜欢对命令中的所有部分进行解释,以便我将来能够理解它.提前致谢.
awk ' { list[$1] = list[$1] "\t" $2 } END { for (i in list) printf "%s%s\n",i,list[i] }' data
第一行添加一个选项卡,第二个字段添加到$1索引的list元素.第二行打印出键和累积的值列表.
样本输出:
1101 7778 7755 8889 6789 4000 2333 7555 9000 1111 2300 1220
如果要对第一列进行排序,可以通过sort -n管道输出.如果你有GNU awk,你也可以调查内置的排序函数:
/usr/gnu/bin/awk ' { list[$1] = list[$1] "\t" $2 } END { n = asorti(list,indexes); for (i = 1; i <= n; i++) printf "%s%s\n",indexes[i],list[indexes[i]] }' data
排序输出:
1101 7778 7755 8889 6789 2300 1220 4000 2333 7555 9000 1111
以上是大佬教程为你收集整理的使用awk对字段进行排序和排列全部内容,希望文章能够帮你解决使用awk对字段进行排序和排列所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。