广告
返回顶部
首页 > 资讯 > 操作系统 >怎么在linux中对awk数组进行排序
  • 125
分享到

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

2023-06-13 03:06:40 125人浏览 薄情痞子
摘要

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

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

代码如下:


[chengmo@localhost ~]$ awk 'BEGIN{info = "this is a test";split(info,tA," ");for(k in tA){print k,tA[k];}}'
4 test
1 this
2 is
3 a

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

代码如下:


[chengmo@localhost ~]$ awk 'BEGIN{info = "this is a test";slen=split(info,tA," ");for(i=1;i<=slen;i++){print i,tA[i];}}'      
1 this
2 is
3 a
4 test

一、通过内置函数(asort,asorti使用) awk 3.1以上版本才支持

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

代码如下:


[chengmo@localhost ~]$ awk 'BEGIN{
a[100]=100;
a[2]=224;
a[3]=34;
slen=asort(a,tA);
for(i=1;i<=slen;i++)
{print i,tA[i];}
}'
1 34
2 100
3 224

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

asorti 使用说明

代码如下:


[chengmo@localhost ~]$ awk 'BEGIN{
a["d"]=100;
a["a"]=224;
a["c"]=34;
slen=asorti(a,tA);
for(i=1;i<=slen;i++)
{print i,tA[i],a[tA[i]];}
}'
1 a 224
2 c 34
3 d 100

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

二、通过管道发送到sort排序

代码如下:


[chengmo@localhost ~]$awk 'BEGIN{
a[100]=100;
a[2]=224;
a[3]=34;
for(i in a)
{print i,a[i] | "sort -r -n -k2";}
}'
2 224
100 100
3 34

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

代码如下:


[chengmo@localhost ~]$ awk 'BEGIN{
a[100]=100;
a[2]=224;
a[3]=34;
for(i in a)
{print i,a[i] | "sort -r -n -k1";}
}'
100 100
3 34
2 224

三、自定义排序函数

awk自定义函数结构:

代码如下:


function funname(p1,p2,p3)
{
   staction;
   return value;
}</p><p>以上是:awk自定义函数表示方式,默认传入参数都是以引用方式传入,return值,只能是字符型或者数值型。 不能返回数组类型。 如果返回数组类型。需要通过形参 方式传入。再获得。</p><p>awk返回数组类型</p><p>awk 'function test(ary){ for(i=0;i<10;i++){  ary[i]=i; } return i;}BEGIN{ n=test(array); for(i=0;i<n;i++){  print array[i]; }}'

排序函数

代码如下:


#arr 传入一维数组 </p><p>#key 排序类型 1是按照值排序 2按照键值 </p><p>#datatype 比较类型 1按照数字排序 2按照字符串排序 </p><p>#tarr 排序返回的数组 </p><p>#splitseq 分割字符串 数组中键与值之间分割字符串 </p><p>#return 数组长度 </p><p>#实现思路,将原始数组a[&lsquo;a&rsquo;]=100 排序后变成 a[1]=a分隔符100 ,然后按照下标递归显示内容。 本排序使用冒泡方式进行。 </p><p>  </p><p>function sortArr(arr,key,datatype,tarr,splitseq)
{ </p><p>    if(key ~ /[^1-2]/)
   {return tarr;}
   for(k in arr)
   {
     tarr[++alen]=(k""splitseq""arr[k]);
   } </p><p>    for(m=1;m<=alen;m++)
   {
       for(n=1;n<=alen-m-1;n++)
       {
           split(tarr[m],tm,splitseq);
           split(tarr[n+1],tn,splitseq); </p><p>                tnum=tarr[m];
           if(datatype==1)
           {
               if(tm[key]+0<tn[key]+0)
               {
                    tarr[m]=tarr[n+1];
                    tarr[n+1]=tnum;
               }
           }
           else
           {
               if((tm[key]"") < (tn[key]""))
               {
                    tarr[m]=tarr[n+1];
                    tarr[n+1]=tnum;
               }
           }
       }
   }
   return alen;
}

完整代码如下:

代码如下:


[chengmo@Centos5 ~]$ awk 'BEGIN{
a["a"]=100;
a["b"]=110;
a["c"]=10;
splitseq="%%";
alen=sortArr(a,2,1,tarr,splitseq);
for(m=1;m<=alen;m++)
{
   split(tarr[m],ta,splitseq);
   print m,ta[1],ta[2];
}
}
function sortArr(arr,key,datatype,tarr,splitseq)
{ </p><p>    if(key ~ /[^1-2]/)
   {return tarr;}
   for(k in arr)
   {
     tarr[++alen]=(k""splitseq""arr[k]);
   } </p><p>    for(m=1;m<=alen;m++)
   {
       for(n=1;n<=alen-m-1;n++)
       {
           split(tarr[m],tm,splitseq);
           split(tarr[n+1],tn,splitseq); </p><p>                tnum=tarr[m];
           if(datatype==1)
           {
               if(tm[key]+0<tn[key]+0)
               {
                    tarr[m]=tarr[n+1];
                    tarr[n+1]=tnum;
               }
           }
           else
           {
               if((tm[key]"") < (tn[key]""))
               {
                    tarr[m]=tarr[n+1];
                    tarr[n+1]=tnum;
               }
           }
       }
   }
   return alen;
}
' </p><p>1 b 110
2 a 100
3 c 10

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网操作系统频道,感谢您对编程网的支持。

--结束END--

本文标题: 怎么在linux中对awk数组进行排序

本文链接: https://www.lsjlt.com/news/265023.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在linux中对awk数组进行排序
    怎么在linux中对awk数组进行排序?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。代码如下:[chengmo@localhost ~]$ awk 'B...
    99+
    2023-06-13
  • 怎么在linux中对awk数组进行操作
    本篇文章为大家展示了怎么在linux中对awk数组进行操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、定义方法可以用数值作数组索引(下标)Tarray[1]=“cheng mo”Tarray[...
    99+
    2023-06-13
  • 怎么在java中对数组进行排序
    这期内容当中小编将会给大家带来有关怎么在java中对数组进行排序,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统...
    99+
    2023-06-14
  • 怎么在python中对元组进行排序
    本篇文章为大家展示了怎么在python中对元组进行排序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(...
    99+
    2023-06-14
  • JavaScript中怎么对对象数组进行排序
    这期内容当中小编将会给大家带来有关JavaScript中怎么对对象数组进行排序,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。基本数组排序默认情况下,Array.sort函...
    99+
    2022-10-19
  • PHP中怎么对数组进行降序排序
    今天就跟大家聊聊有关PHP中怎么对数组进行降序排序,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。数组降序排序的三个函数:rsort():对数组元素进行降序排序arsort():根据关...
    99+
    2023-06-20
  • PHP中怎么对整数数组进行排序
    这篇文章将为大家详细讲解有关PHP中怎么对整数数组进行排序,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。首先从标题可知,这回要说的是怎么编写一个PHP类来实现对整数数组的排序,其实在PHP中...
    99+
    2023-06-20
  • PHP中怎么用数组函数对数组进行升序排序
    这篇文章主要讲解了“PHP中怎么用数组函数对数组进行升序排序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中怎么用数组函数对数组进行升序排序”吧!今天我们就来看看数组排序中的升序操作,...
    99+
    2023-06-20
  • 怎么在php中使用sort函数对数组进行排序
    本篇文章为大家展示了怎么在php中使用sort函数对数组进行排序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hyper...
    99+
    2023-06-14
  • labview怎么对二维数组进行排序
    在LabVIEW中,可以使用Sort 2D Array函数对二维数组进行排序。以下是一个示例步骤:1. 创建一个二维数组。可以使用B...
    99+
    2023-09-26
    labview
  • php怎么对一维数组进行排序
    这篇文章主要介绍了php怎么对一维数组进行排序的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php怎么对一维数组进行排序文章都会有所收获,下面我们一起来看看吧。PHP作为脚本语言,常被用于Web开发方面的应用。...
    99+
    2023-07-05
  • linux怎么对文件中的数据进行排序
    在Linux中,可以使用`sort`命令对文件中的数据进行排序。`sort`命令的基本语法如下:```sort [OPTION].....
    99+
    2023-09-11
    linux
  • awk中的数组排序问题怎么解决
    在awk中,可以使用内置的sort函数对数组进行排序。sort函数的用法如下:```asort(array [, target])`...
    99+
    2023-09-16
    awk
  • 怎么在python中对series进行排序
    这篇文章将为大家详细讲解有关怎么在python中对series进行排序,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python主要用来做什么Python主要应用于:1、Web开发;2、数据...
    99+
    2023-06-14
  • 怎么在java中对Sorted进行排序
    这篇文章给大家介绍怎么在java中对Sorted进行排序,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queue队列:有序,可重...
    99+
    2023-06-14
  • js中如何对json数组进行排序
    目录js对json数组进行排序js根据json数组多个字段排序总结js对json数组进行排序 废话不多说,直接上代码 // 升序排列 function up(a, b) {     ...
    99+
    2023-05-16
    js json数组 json数组进行排序 json数组排序
  • PHP中对数组进行排序的方法
    这篇文章主要介绍PHP中对数组进行排序的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法...
    99+
    2023-06-14
  • 怎么在java中对集合进行排序
    这篇文章将为大家详细讲解有关怎么在java中对集合进行排序,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于...
    99+
    2023-06-14
  • JavaScript中怎么对多维数组多键值进行排序
    JavaScript中怎么对多维数组多键值进行排序,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JavaScript实现多维数...
    99+
    2022-10-19
  • 使用php怎么对数组进行降序或升序排序
    使用php怎么对数组进行降序或升序排序?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作