linux中利用awk对数组进行排序
数组
在排序前需要对数组有所了解,数组是用于存储一系列值得变量,这些值之间通常是由联系的,可通过索引来访问数组的值,索引需要用括号括起来,基本格式如下:
array[index]=value
awk数组无须定义数组类型和大小而可以直接赋值使用。
1.关联数组
关联数组是指数组的索引可以是字符串,也可以是数字。对于每个数组元素,awk会自动建立索引-数值元素值对。这里索引不代表该数值存储地址信息。
可以用for循环来访问数组,语法如下:
for (variable in array)
do something with array[variable]
2.split函数
这里介绍split函数,是因为它能放回一个数组,split(r,s,t)指的是将r以t为分隔符分隔,并将返回的数组赋给s。接下来就可以对s进行遍历排序了。
这里举个简单的例子使用split:
创建一个脚本array.awk如下:
#!/usr/bin/awk -f --这里指明awk的路径,-f为调用该脚本时的选项
BEGIN {FS=","} --BEGIN,循环前的操作步骤,以逗号为分隔符
{split($1,name," ");
for(i in name) print name[i]} --循环主体,将域1中以空格为分隔符分隔,将返回的数组赋给name,然后对name遍历。
排序:
1. awk 'BEGIN {info="I am a boy";split(info,str," ");for(i=1;i<=length(str);i++) {print i str[i]}}' 以上是个简单的排序
2.awk 'BEGIN {data[1]=100;data[3]=200;data[5]=300;for(i in data) {print(i,data[i])|"sort -k1 -n -r"}}' 以上为通过管道符将要打印的内容传给sort排序后再打印。
上面的例子可以写成脚本data_sort.awk:
#!/usr/bin/awk -f
BEGIN {
data[1]=100;
data[3]=200;
data[5=300;
for(i in data){
print i,data[i]|"sort -k1 -n -r"
}
}
执行chmod u+x data_sort.awk ./data_sort.awk
linux中利用awk对数组进行排序的更多相关文章
- linux中利用iptables+geoip过滤指定IP
1. 前提条件 iptables >= 1.4.5 kernel-devel >= 3.7 2. 安装依赖包 代码如下 复制代码 # yum install gcc gcc-c++ m ...
- Linux中利用crontab创建计划任务
在linux中启动crontab服务: /etc/init.d/crond start crontab的命令格式 crontab -l 显示当前的crontab 文件(默认编写的crontab文 ...
- 在虚拟机的linux中利用VMware Tools实现与windows共享文件
很多人都知道安装"VMware Tools"可以实现与windows共享,但是其实它的功能远不止此.安装了"VMware Tools"后,虚拟机的网络. ...
- php中利用array_filter过滤数组为空值
[导读] 在我们开发过程中,判断数组为空时你会想到什么方法呢?首先想到的应该是empty函数,不过直接用empty函数判断为空是不对的,因为当这个值是多维数的时候,empty结果是有值的.其实我们可以 ...
- Linux中利用grep命令如何检索文件内容详解
前言 Linux系统中搜索.查找文件中的内容,一般最常用的是grep命令,另外还有egrep命令,同时vi命令也支持文件内容检索.下面来一起看看Linux利用grep命令检索文件内容的详细介绍. 方法 ...
- Linux中利用extundelete恢复误删除的数据
利用extundelete工具恢复磁盘误删除的数据 原理: 简单介绍下关于inode的知识.在Linux下可以通过"ls -id"命令来查看某个文件或者目录的inode值,例如查看 ...
- linux中通过awk进行文本的对齐格式化处理?awk printf左对齐?
需求描述: 今天在对一个从excel文件中粘出来的内容进行整理的时候,发现格式很乱,就想用awk工具格式化一下,在此记录一下. 操作过程: 1.从excel中复制出来的内容 job_name j ...
- Linux中的 awk查找日志中的相关记录
假设要在 api.log.201707201830 文件中,(此文件的多个字段数据以不可见字符^A(键盘上按下Ctrl+V+A)分隔),要输出第70个字段: awk -F '^A' '{print $ ...
- 在Linux中利用Service命令添加系统服务及开机自启动
有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s 在/etc/rc.d/rc*.d目录中建立/e ...
随机推荐
- 从零开始攻略PHP(9)——错误和异常处理
1.Exception类 这个类是PHP为异常处理提供的内置类.构造函数的两个参数分别是错误消息和错误代码. 除了构造函数之外,该类还提供了如下的内置方法: · getCode() 返回传递给构造函数 ...
- PostgreSQL pg_dump pg_dumpall and restore
pg_dump dumps a database as a text file or to other formats. Usage: pg_dump [OPTION]... [DBNAME] Gen ...
- Lintcode: Rotate String
Given a string and an offset, rotate string by offset. (rotate from left to right) Example Given &qu ...
- hdu1251(字典树)
统计难题(hdu1251) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) Tota ...
- web处理jsp文件的三个阶段
web处理jsp文件的三个阶段 翻译阶段(servlet) 编译阶段(class) 执行阶段(print页面标签) 推送html到浏览器
- CentOs5.2中PHP的升级
最近一个项目中需要使用到PHP5.2的版本,而服务器上使用了官方的yum源进行安装,默认的版本是5.1.6,需要升级.但是因为不是一个非常 正式的服务器环境,所以想通过简单的yum update一下了 ...
- Android 5.0新特性了解(一)----TabLayout
1.在2015年的google大会上,google发布了新的Android Support Material Design库,里面包含了几个新的控件,其中就有一个TabLayout,它就可以完成Tab ...
- react编译器jsxTransformer,babel
1.JSX是什么JSX其实是JavaScript的扩展,React为了代码的可读性更方便地创建虚拟DOM等原因,加入了一些类似XML的语法的扩展. 2.编译器——jsxTransformerJSX代码 ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON FillUp1
zw版[转发·台湾nvp系列Delphi例程]HALCON FillUp1 procedure TForm1.Button1Click(Sender: TObject);var img : HImag ...
- 【sinatra】安装测试
$ gem install sinatra 测试: $ subl app.rb app.rb内容: require 'sinatra' get '/' do "Hello, World!&q ...