awk -F"分隔符" "command" filename

awk -F":" '{print $1}' /etc/passwd

字段引用:

$1代表第一列;
$2代表第二列;
$0代表所有列。

内置变量:

FS  代表输入的分隔符,等同于-F
OFS  代表输出的分隔符
NF  代表字段数,因为NF是列数,所以$NF代表最后一列
NR  代表当前处理第几行

关系操作符:

==  等于
!=  不等于
>  大于
<  小于
>=  大于等于
<=  小于等于

逻辑操作符

&&  逻辑与,类似于shell的[ 条件1 -a 条件2 ]
||  逻辑或,类似于shell的[ 条件1 -0 条件2 ]
!  非

运算符

+ - * /
^或**  幂

awk可以运算浮点数

echo $[1.2*3]  #错误
echo | awk '{print 1.2*3}'  #正确

练习

截取所有开放监听的TCP协议端口号
netstat -ntl | awk 'NR>2 {print $4}' |awk -F: '{print $NF}' /etc/passwd文件
截取前五行的倒数第二列
awk -F: 'NR<=5 {print $(NF-1)}' /etc/passwd
打印第五行
awk -F: 'NR==5 {print $0}' /etc/passwd
打印第五行第五列
awk -F: 'NR==5 {print $5}' /etc/passwd
awk -F: '{if (NR==5) print $5}' /etc/passwd
打印第五行和第六行
awk -F: 'NR==5 || NR==6 {print $0}' /etc/passwd
awk -F: 'NR>=5 && NR<=6 {print $0}' /etc/passwd
打印每行的列数
awk -F: '{print "第"NR"行有"NF"列"}' /etc/passwd
打印奇数行,并加上行号
awk 'NR%2==1 {print NR,$0}' /etc/passwd 截取IP地址,-F后[.:]表示以.或:做分隔符
ifconfig |grep Bcast|awk -F[.:] '{print $2}'

时间可以直接比较

cat test.txt
A 2016-11-15 19:20:12
B 2016-11-15 18:12:31
C 2016-11-15 17:58:59 找出18:30之前的记录
awk '$3<"18:30:00" {print $0}' test.txt 注:时间必须写成09:00:00,不能写成9:00:00

BEGIN和END

awk -F: 'BEGIN{处理文件前执行的代码块,可以用于赋值或者打印首行表头} {处理文件过程中的代码块,行处理} END{处理文件后的代码块}' file

printf格式化输出

%s    代表字符串
%d 代表十进制数字 ls -l /etc |awk 'NR>1 {print $5,$NF}'
ls -l /etc |awk 'NR>1 {printf("%d %s\n",$5,$NF)}' 结果同上
ls -l /etc |awk 'NR>1 {printf("%4d %s\n",$5,$NF)}' $5保留4位
ls -l /etc |awk 'NR>1 {printf("%04d %s\n",$5,$NF)}' $5保留4位,不足4位用0补齐

字符匹配

== 完全精确匹配
~ 匹配
!~ 不匹配
!= 不相等 awk -F: '$1=="root" {print $0}' /etc/passwd
awk -F: '$1~"oo" {print $0}' /etc/passwd
awk -F: '$1!~"oo" {print $0}' /etc/passwd
 

字符串函数

长度函数length()
echo 12345| wc -L
echo 12345| awk '{print length($0)}' 大小写转换
toupper() 转大写
tolower() 转小写
awk -F: '{print tolower(toupper($1))}' /etc/passwd 位置函数index()
awk '$0~"ss" {print index()$0,"ss"}' /etc/passwd
算出ss在那一行的字符位置 截取函数substr()
awk -F: '{print substr($1,1,2)}' /etc/passwd
把$1从第一个字符起,截取2个字符 echo 123456789ss987654321 | awk '{print substr($0,index($0,"ss"),4)}'
结果:ss98

shell——awk的更多相关文章

  1. Shell awk文本处理,shell脚本编写

    Shell awk文本处理,shell脚本编写 一:内容包含awk.变量.运算符.if多分支 <a>语法糖: awk [options] 'commands' files option - ...

  2. shell awk入门

    本文参考自 http://www.cnblogs.com/zhuyp1015/archive/2012/07/11/2586985.html awk:好用的数据处理工具 awk 也是一个非常棒的数据处 ...

  3. linux shell awk 流程控制语句(if,for,while,do)详细介绍

    在linux awk的 while.do-while和for语句中允许使用break,continue语句来控制流程走向,也允许使用exit这样的语句来退出.break中断当前正在执行的循环并跳到循环 ...

  4. 转 shell awk 使用详解

    awk简介 awk: 中文意思是报告生成器 能够根据我们输入的信息,将信息格式化以后显示,将定义好的信息以比较美观(直观)的方式显示出来出现比较早,继而出现了new awk(nawk)在windows ...

  5. [转]shell awk 入门,中级,高级使用

    awk很常用,对于我们在shell中分析log和file很有好处,很实用的东西,大家一起分享学习- 作为技术支持工程师,我们最最经常的工作就是要处理文本文件,不管是什么数据库最后都可以导成文本,我们就 ...

  6. [转]shell awk sed tr grep 语法汇总

    tr 基本语法 -c          # 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII  -d          # 删除字符串1中所有输入字符  -s          # 删除所 ...

  7. [SHELL]awk的用法举例

    从初学awk到现在小有所成,非常感谢CUers的帮助,总结了下自己曾经遇到的问题和犯的错误,供初学者借鉴,因本人非计算机专业,对专业词汇可能有表述不对的地方,还请指正和补充! 1. awk '{cod ...

  8. Linux shell awk数组使用

    awk中使用数组 一.数组格式 数组是一个包含一系列元素的表. 格式如下:     abc[1]="xiaohong"     abc[2]="xiaolan" ...

  9. Linux shell awk模式使用

    awk的PATTERN表示方法: 1,正则表达式,格式为/regex/ 以冒号为分隔符,显示/etc/passwd以r开头的行的第一段 [root@wei awk]# awk -F: '/^r/{pr ...

随机推荐

  1. 我的架构设计~用层关系图说说mvc,mvvm,soa,ddd

    下面是按着我所接触的架构模式,开始一个一个的说一下 第一 标准架构 三层结构

  2. ADO.NET 核心对象简介

    ADO.NET是.NET中一组用于和数据源进行交互的面向对象类库,提供了数据访问的高层接口. ADO.NOT类库在System.Data命名空间内,根据我们访问的不同数据库选择命名空间,System. ...

  3. python property理解

    一般情况下我这样使用property: @property def foo(self): return self._foo # 下面的两个decrator由@property创建 @foo.sette ...

  4. 使用AWS亚马逊云搭建Gmail转发服务(二)

    title: 使用AWS亚马逊云搭建Gmail转发服务(二) author:青南 date: 2014-12-31 14:44:27 categories: [Python] tags: [Pytho ...

  5. H5+JS+CSS3 综合应用

    慕课网新教程H5+JS+CSS3 实现的七夕言情主题效果已经出炉了 从设计到实现到录制与编写用了快1个月的时间,说真的这个案例是慕课定制的,我之前也没有系统的做过这样的一个效果,在实现的时候自己也重新 ...

  6. ASP.NET MVC5+EF6+EasyUI 后台管理系统(27)-权限管理系统-分配用户给角色

    系列目录 分配用户给角色,跟分配角色给用户操作是基本一致的. 打开模块维护,展开SysRole模块添加一个操作码,并赋予权限 设置好之后将权限授权给管理员,在SysRole的index添加操作码与js ...

  7. golang-web框架revel一个表单提交的总结

    这里要介绍好是revel框架的表单post提交的列子,主要是用于入门学习,和一些知识点的讲解: 首先: 来了解一个问题那就是重复提交表单,做过form表单提交的同学都知道,如果表单提交后不做处理,那么 ...

  8. Oracle基础维护01-常用管理命令总结

    概览: 1.Oracle 内存管理 2.Oracle 数据库启动关闭 3.Oracle 参数文件 4.Oracle 控制文件 5.Oracle redo日志文件 6.Oracle undo表空间管理 ...

  9. Windows Live Writer 在线安装失败的解决方法。

    这里提供一种解决方法:下载离线安装包,我这个版本是2011的.大家有兴趣的话可以下载一下: http://wl.dlservice.microsoft.com/download/8/3/D/83D75 ...

  10. nginx 基础

    同步和阻塞,异步和非阻塞 http://yaocoder.blog.51cto.com/2668309/1308899  (51CTO) https://segmentfault.com/a/1190 ...