位置: 编程技术 - 正文

Linux如何使用awk文本处理工具进行数组排序(linux如何使用vim编写程序)

编辑:rootadmin

推荐整理分享Linux如何使用awk文本处理工具进行数组排序(linux如何使用vim编写程序),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:Linux如何使用rj45转usb,linux如何使用vim编写程序,linux如何使用vim编写程序,Linux如何使用命令,linux如何使用u盘,Linux如何使用unzip命令,linux如何使用u盘,linux如何使用gcc编译,内容如对您有帮助,希望把文章链接给更多的朋友!

  Linux系统操作中,awk是款文本处理工具,提供多种功能,那么如何使用awk进行数组排序呢?其实awk数组排序的方法有很多种,下面小编就给大家详细介绍下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以上版本才支持

  1、asort使用说明

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

  代码如下:

  [chengmo@localhost ~]$ awk ‘BEGIN{

  a[]=;

  a[2]=;

  a[3]=;

  slen=asort(a,tA);

  for(i=1;i《=slen;i++)

  {print i,tA[i];}

  }’

  1

  2

  3

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

  2、asorti 使用说明

  代码如下:

  [chengmo@localhost ~]$ awk ‘BEGIN{

  a[“d”]=;

  a[“a”]=;

  a[“c”]=;

  slen=asorti(a,tA);

  for(i=1;i《=slen;i++)

  {print i,tA[i],a[tA[i]];}

  }’

  1 a

  2 c

  3 d

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

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

  代码如下:

  [chengmo@localhost ~]$awk ‘BEGIN{

  a[]=;

  a[2]=;

  a[3]=;

  for(i in a)

  {print i,a[i] | “sort -r -n -k2”;}

  }’

  2

  

  3

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

  代码如下:

  [chengmo@localhost ~]$ awk ‘BEGIN{

  a[]=;

  a[2]=;

  a[3]=;

  for(i in a)

  {print i,a[i] | “sort -r -n -k1”;}

  }’

  

  3

  2

  三、自定义排序函数

  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《;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[‘a’]= 排序后变成 a[1]=a分隔符 ,然后按照下标递归显示内容。 本排序使用冒泡方式进行。 《/p》 《p》 《/p》 《p》function sortArr(arr,key,datatype,tarr,splitseq)

Linux如何使用awk文本处理工具进行数组排序(linux如何使用vim编写程序)

  { 《/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”]=;

  a[“b”]=;

  a[“c”]=;

  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

  2 a

  3 c

  上面就是Linux使用awk进行数组排序的方法介绍了,本文一共介绍了3种方法,每种方法都能够实现awk的数组排序,可选择任一方法实现。

Linux如何安装使用pidstat命令以对进程数据进行监控 Linux系统监控的命令其实有很多,pidstat命令就是其中的一种,使用pidstat命令可以对Linux系统进程数据进行监控,但要先对pidstat进行安装才能使用,下面

Linux不用使用软件把纯文本文档转换成PDF文件的方法 现在有很多软件能够将文本文件转换成PDF文件,其实在Linux系统中,不用使用软件也能将文本文本转换成PDF,只需轻松两步,下面小编就给大家介绍下Lin

在Linux中安装配置和加载Florence屏幕键盘 在Linux系统操作中,为了增加系统的安全性,可使用屏幕键盘,用鼠标进行操作。那么Linux如何使用屏幕键盘呢?其实有很多软件都能够开启屏幕键盘的

标签: linux如何使用vim编写程序

本文链接地址:https://www.jiuchutong.com/biancheng/368265.html 转载请保留说明!

上一篇:Linux使用awk文本处理工具实现多行合并的实例(linux awk nr)

下一篇:Linux如何安装使用pidstat命令以对进程数据进行监控(linux安装步骤)

  • 计算增值税时要包括关税吗
  • 一般纳税人做账流程图
  • 两地发工资个税处理
  • 企业的净资产包括实收资本吗
  • 毛利率和主营利润率的区别
  • 小规模销售免税农产品的分录
  • 银行商业承兑汇票到期怎么兑现
  • 应收退货成本会计科目代码
  • 固定资产清理是备抵账户吗
  • 员工在社保局报备流程
  • 银行承兑汇票收费标准
  • 向农户购买农产品如何入账
  • 小规模纳税人纳税申报流程
  • 法律规定临时工工资最迟多久结清
  • 税控盘怎么作废发票重新开
  • 月末计提税金数据从哪得来的
  • 废旧物品回收是做什么的
  • 外贸企业出口退税账务处理
  • 收到股改代扣代缴税款
  • 删掉广告有什么办法
  • 坏账准备的方法
  • 外籍人员个税免征吗
  • kcleaner.exe是什么
  • object转map工具类
  • 特拉凯城堡是哪个国家
  • python模拟微信
  • 堡垒山是哪个国家
  • 电子承兑汇票支付信用查询是什么意思
  • ros入门21讲
  • 其他收益增加说明什么
  • 机器学习中的数学——距离定义(八):余弦距离(Cosine Distance)
  • 增值税减免附加税用计提吗
  • 一次性伤残就业补助金
  • ps橡皮擦怎么擦的跟背景色一样
  • nginx运行python
  • 哪些税是季报
  • 未开票交税怎么做账
  • 购进固定资产的进项税可以抵扣吗
  • 帝国cms怎么用
  • vscode yaml插件
  • 结转个人承担的社保费分录
  • 租赁个人房屋租金怎么算
  • 印花税的计税依据为各种应税凭证上所记载的计税金额
  • 项目差旅费能计入项目费用吗
  • 银行存款如何做到4个点
  • 工程结算成本和主营业务成本一样吗
  • 上月计提多了怎么办
  • 装修费用应该计入什么科目
  • 开具发票涉及到哪些会计科目?
  • 个贷系统平账专户怎么做账
  • 买货物没有进项税额,如何开6个点发票
  • 有留抵税额的会计处理
  • 可供出售债权投资
  • 培训费发票可以抵扣吗
  • 哪些个体户要报残保金
  • 数量金额式明细账余额怎么填
  • 税局代开专用发票时交的钱如何记账?
  • 成本核算方法是移动加权平均法吗
  • 餐饮费与业务招标的关系
  • sqlserver2000数据库安装教程
  • mysql启动成功但是无法连接
  • 受益无穷还是受用无穷
  • windows8禁用uac
  • Win10预览版桌面图标和任务栏不翼而飞怎么办?
  • 帝国时代2能在win10
  • 在ubuntu上安装gcc
  • 高手养成计划 小说
  • Cocos2dx CCSprite CCSpriteFrame CCTexture2D CCAnimation学习总结
  • opengl 旋转矩阵
  • awk实例
  • jquery使用教程
  • function函数的定义
  • 细说javascript
  • u3d unity3d
  • 走出JavaScript初学困境—js初学
  • 武汉电子税务局申领发票以后如何自取
  • 目的地查验和口岸查验费用一样吗
  • 耕地占用税是土地增值税开发成本吗
  • 税务部门立足
  • 地税纳税申报表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设