一、split 初始化和类型强制 

awk的内建函数split允许你把一个字符串分隔为单词并存储在数组中。你可以自己定义域分隔符或者使用现在FS(域分隔符)的值。
格式:

   split (string, array, field separator)
   split (string, array)  -->如果第三个参数没有提供,awk就默认使用当前FS值。

例1:替换分隔符

time="12:34:56"
out=`echo $time | awk '{split($0,a,":");print a[1],a[2],a[3]}'`
echo $out

例2:计算指定范围内的和(计算每个人1月份的工资之和)

$ cat test.txt
Tom -- car
John -- bike
vivi -- car
Tom -- car
John -- bike
$ awk '{split($2,a,"-");if(a[2]==01){b[$1]+=$5}}END{for(i in b)print i,b[i]}' test.txt
vivi
Tom
John

例3:

$ head industryList.txt
IT
IT,互联网
IT服务(系统/数据/维护)
IT服务(系统/数据/维护),专业服务/咨询(财会/法律/人力资源等)
IT服务(系统/数据/维护),专业服务/咨询(财会/法律/人力资源等),学术/科研,计算机软件
$ head industryList.txt | awk '{split($0, arr, ","); for (i in arr) print arr[i]}'
IT
IT
互联网
IT服务(系统/数据/维护)
IT服务(系统/数据/维护)
专业服务/咨询(财会/法律/人力资源等)
IT服务(系统/数据/维护)
专业服务/咨询(财会/法律/人力资源等)
学术/科研
计算机软件
$ cat industryList.txt | awk '{split($0, arr, ","); for (i in arr) print arr[i]}' | sed 's/ //g' | sort | uniq > industryList_split.txt

二、substr 截取字符串
        返回从起始位置起,指定长度之子字符串;若未指定长度,则返回从起始位置到字符串末尾的子字符串。
格式:
  substr(s,p) 返回字符串s中从p开始的后缀部分
  substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分
例子:

$ echo "" | awk '{print substr($0,1,1)}'

解释:
awk -F ',' '{print substr($3,6)}'    --->  表示是从第3个字段里的第6个字符开始,一直到设定的分隔符","结束.
substr($3,10,8)  --->  表示是从第3个字段里的第10个字符开始,截取8个字符结束.
substr($3,6)     --->  表示是从第3个字段里的第6个字符开始,一直到结尾

三、length 字符串长度
   length函数返回没有参数的字符串的长度。length函数返回整个记录中的字符数。

$ echo "" | awk '{print length}'
$ cat info.json | jq .industryList | awk -F '"' '{print $2}' | awk '{if (length > 0) print $0}' | sort | uniq > industryList.txt

四、gsub函数

gsub函数则使得在所有正则表达式被匹配的时候都发生替换。gsub(regular expression, subsitution string, target string);简称 gsub(r,s,t)。

举例:把一个文件里面所有包含 abc 的行里面的 abc 替换成 def,然后输出第一列和第三列

$ awk '$0 ~ /abc/ {gsub("abc", "def", $0); print $1, $3}' abc.txt

参考:

http://gdcsy.blog.163.com/blog/static/12734360920130241521280/

http://www.cnblogs.com/sunada2005/p/3493941.html

linux下awk内置函数的使用(split/substr/length)的更多相关文章

  1. 【转】linux下awk内置函数的使用(split/substr/length)

    转自:http://gdcsy.blog.163.com/blog/static/12734360920130241521280/ 一.split 初始化和类型强制        awk的内建函数sp ...

  2. linux awk 内置函数详细介绍(实例)

    这节详细介绍awk内置函数,主要分以下3种类似:算数函数.字符串函数.其它一般函数.时间函数 一.算术函数: 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y ...

  3. linux awk 内置函数实例

    awk内置函数,主要分4种:算数函数.字符串函数.时间函数.一般函数 一.算术函数 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y, x ) 返回 y/x ...

  4. linux awk 内置函数详细介绍(实例)

    这节详细介绍awk内置函数,主要分以下3种类似:算数函数.字符串函数.其它一般函数.时间函数 一.算术函数: 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y ...

  5. awk内置函数、外部变量

    外部变量 ①获取外部变量 格式: awk '{action}' 变量名=变量值 ,这样传入变量可以在action中获得值. 示例: test='awk test'--day-5 外部变量 ①获取外部变 ...

  6. Linux常用基本命令:三剑客命令之-awk内置函数用法

    awk的内置函数大致可以分类为算数函数.字符串函数.时间函数.其他函数等 算数函数 最常用的算数函数有rand函数.srand函数.int函数. 可以使用rand函数生成随机数,但是使用rand函数时 ...

  7. awk 内置函数列表

    1.gsub要在整个记录中替换一个字符串为另一个,使用正则表达式格式,/目标模式/,替换模式/.例如改变学生序号4842到4899:$ awk 'gsub('4842/, 4899) {print $ ...

  8. awk 内置函数的使用

    转自:http://gdcsy.blog.163.com/blog/static/12734360920130241521280/ 一.split 初始化和类型强制        awk的内建函数sp ...

  9. awk内置函数

    gsub(r,s,t) 在字符串t中,用字符串s替换和正则表达式r匹配的所有字符串.返回替换的个数.如果没有给出t,缺省为$0 index(s,t) 返回s 中字符串t 的位置,不出现时为0 leng ...

随机推荐

  1. centos 7 删除 virbr0 虚拟网卡virsh net-list

    这几天研究dubbo,在电脑上装了几台Center os 7虚拟机,最后把提供者部署到虚拟机中时,发现一个有趣的事:在dubbo-admin管理平台上看到两台不同虚拟机中的服务提供者ip都是这个玩意. ...

  2. OAuth Implementation for ASP.NET Web API using Microsoft Owin.

    http://blog.geveo.com/OAuth-Implementation-for-WebAPI2 OAuth is an open standard for token based aut ...

  3. Sqoop-问题

    1.权限问题 // :: INFO mapreduce.Job: Job job_1555064328415_0328 failed with state FAILED due to: Job set ...

  4. Pandas 数据分析基础

    Pandas 安装 anaconda 安装: conda list pandas 查看是否已经安装 conda install pandas conda update pandas pip 安装 pi ...

  5. Python学习札记(一) 初始python

    参考: 廖雪峰教程:Python简介 笔记 1.C语言是可以用来编写操作系统的贴近硬件的语言,所以,C语言适合开发那些追求运行速度.充分发挥硬件性能的程序.而Python是用来编写应用程序的高级编程语 ...

  6. LA 3720 高速公路(互质判斜率)

    https://vjudge.net/problem/UVALive-3720 题意: 有一个n行m列的点阵,问一共有多少条非水平非垂直的直线至少穿过其中的两个点. 思路: 没思路的题. 首先枚举矩形 ...

  7. select * from table_name where 1=1的

    我们先来看看这个语句的结果:select * from table where 1=1,其中where 1=1,由于1=1永远是成立的,返回TRUE,条件为真:所以,这条语句,就相当于select * ...

  8. Dive into Spring framework -- 了解基本原理(二)--设计模式-part2

    Template模式 Template模式顾名思义是提供了一种模板,也就是针对某种业务提供了模范框架.这个在spring中是属于核心模式的,因为其ApplicationContext抽象类就是模板模式 ...

  9. Sql字符串操作函数

    1.去空格函数 (1).LTRIM() 把字符串头部的空格去掉. (2).RTRIM() 把字符串尾部的空格去掉. 2.字符转换函数(1).ASCII()返回字符表达式最左端字符的ASCII 码值.在 ...

  10. java7与java8的新特性

    java7 新特性: 1. switch 里面的 case 条件可以使用字符串了. 2. 运用 List\tempList = new ArrayList<>(); 即泛型实例化类型自动判 ...