shell awk数组&排序

例:

test01 aaa
test02 bbb
test06 fff
test03 ccc
test04 ddd
test05 eee

-----------------------------------------

awk '{
oldarr[substr($1,4)]=$2}         //老数组为:oldarr[t01]=aaa,oldarr[t02]=bbb...
END
{asort(oldarr, newarr);      //将老数组数值排序处理后赋给新数组,新数组为:newarr[1]=aaa,oldarr[2]=bbb...
for(i=1;i<=length(newarr);i++) //asort(oldarr, newarr)自身等于数组长度=6
{printf newarr[i]" "}}'              //数组是从1开始的,非0

输出结果为:
aaa bbb ccc ddd eee fff

-----------------------------------------

awk '{
oldarr[substr($1,4)]=$2}         //老数组为:oldarr[t01]=aaa,oldarr[t02]=bbb...
END
{asorti(oldarr, newarr);     //将老数组下标排序处理后赋给新数组,新数组为:newarr[1]=t01,oldarr[2]=t02...
for(i=1;i<=length(newarr);i++) //length()=asort(oldarr, newarr)=asorti(oldarr, newarr)=6
{printf newarr[i]" "}}'


输出结果为:

t01 t02 t03 t04 t05 t06

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值