怎么在linux中对awk数组进行排序

  介绍

怎么在linux中对awk数组进行排序?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

代码如下:


[chengmo@localhost ~]美元awk & # 39;开始{信息=?这是一个test";分裂(信息,助教,““);在tA (k){打印k, tA [k];}} & # 39;
4测试
1
2
3

如果需要按照顺序输出,通过键值定位方式输出。

代码如下:


[chengmo@localhost ~]美元awk & # 39;开始{信息=?这是一个test"; slen=分裂(信息,助教,““);(i=1; i<=slen;我+ +){打印我,tA[我];}}& # 39;,,,第一

2是
3
4测试

<强>一、通过内置函数(带点,asorti使用)awk 3.1以上版本才支持

1,带点使用说明
srcarrlen=带点[srcarr dscarr]默认返回值是:原数组长度,传入参数dscarr则将排序后数组赋值给dscarr。
,

代码如下:


[chengmo@localhost ~]美元awk & # 39;开始{
[100]=100;
[2]=224;
[3]=34;
slen=带点(a, tA);
(i=1; i<=slen;我+ +)
{打印我,tA[我];}
} & # 39;
1 34
2 224 100
3

带点只对值进行了排序,因此丢掉原先键值。

2, asorti使用说明

代码如下:


[chengmo@localhost ~]美元awk & # 39;开始{
[“d"]=100;
[“a"]=224;
[“c"]=34;
slen=asorti (a, tA);
(i=1; i<=slen;我+ +)
{打印我的助教[我],[tA[我]];}
} & # 39; 1
224
2 c 34 3 d
100

asorti对键值进行排序(字符串类型),将生成新的数组放入:助教中。

<强>二,通过管道发送到排序排序

代码如下:


[chengmo@localhost ~]美元awk & # 39;开始{
[100]=100;
[2]=224;
[3]=34;为(我的)

{打印我,[我]|“排序- r - n -k2";}
} & # 39;
224
100年34 100
3

通过管道,发送到外部程序“排序”排序,- r从大到小,- n按照数字排序,k2以第2列排序。通过将数据丢给第3方的那种命令,所有问题变得非常简单。如果以键值排序,mdash; k2变成k1即可。

代码如下:


[chengmo@localhost ~]美元awk & # 39;开始{
[100]=100;
[2]=224;
[3]=34;为(我的)

{打印我,[我]|“排序- r - n -k1";}
} & # 39;
100年34 100
3
224

<强>三、自定义排序函数

awk自定义函数结构:

代码如下:


函数funname (p1, p2, p3)
{
,,staction;
,,返回值;
} & lt;/p>   & lt; p>以上是:awk自定义函数表示方式,默认传入参数都是以引用方式传入,返回值,只能是字符型或者数值型。不能返回数组类型。如果返回数组类型。需要通过形参方式传入。再获得灵活;/p>   & lt; p> awk返回数组类型& lt;/p>   & lt; p> awk & # 39;功能测试(必要){(i=0; i<10;我+ +){,必要[我]=我;}返回我。}{开始n=测试(数组);(我=0;i

排序函数

代码如下:


# arr传入一维数组& lt;/p>   & lt; p> #键排序类型1是按照值排序2按照键值& lt;/p>   & lt; p> #数据类型比较类型1按照数字排序2按照字符串排序& lt;/p>   & lt; p> #塔尔排序返回的数组& lt;/p>   & lt; p> # splitseq分割字符串数组中键与值之间分割字符串& lt;/p>   & lt; p> #返回数组长度& lt;/p>   & lt; p> #实现思路,将原始数组一个[,而第一部,,)=100排序后变成一个[1]=分隔100年符,然后按照下标递归显示内容。本排序使用冒泡方式进行。& lt;/p>   & lt; p>,& lt;/p>   & lt; p>函数sortArr(加勒比海盗、关键数据类型,塔尔splitseq)
{& lt;/p>   & lt; p>,,如果(关键~ (^ 1 - 2)/)
,,{返回塔尔;}
,为在加勒比海盗(k),
,,{
,,,塔尔(+ +阿伦)=(k"“splitseq"“arr [k]);
,,}& lt;/p>   & lt; p>,,(m=1; m<=阿伦;m + +)
,,{
,,,,(n=1; n<=alen-m-1; n + +)
,,,,{
,,,,,,分裂(塔尔[m], tm splitseq);
,,,,,,分裂(塔尔(n + 1)、tn splitseq);& lt;/p>   & lt; p>,,,,,,,塔尔,tnum=[m]。
,,,,,,如果(数据类型==1)
,,,,,,{
,,,,,,,,如果(tm(例子)+ 0 & lt; tn(例子)+ 0)
,,,,,,,,{
,,,,,,,,,,塔尔[m]=塔尔(n + 1);
,,,,,,,,,,塔尔(n + 1)=tnum;
,,,,,,,}
大敌;,,,,}
大敌;,,,,,
其他,,,,,{
,,,,,,,,如果((tm(例子)““)& lt;(tn(例子)”;“))
,,,,,,,,{
,,,,,,,,,,塔尔[m]=塔尔(n + 1);
,,,,,,,,,,塔尔(n + 1)=tnum;
,,,,,,,}
大敌;,,,,}
大敌;,,}
大敌;}
大敌;null   null   null   null   null

怎么在linux中对awk数组进行排序