命令名称:awk

作用:

对文本和数据进行处理

详细说明:

awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。

数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。

它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,

比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。

语法格式:

awk [options] 'scripts' var=value filename

常用参数:

-F 指定分隔符(可以是字符串或正则表达式)

-f 从脚本文件中读取awk命令

-v var=value 赋值一个用户定义变量,将外部变量传递给awk

awk 脚本基本结构:

awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' filename

一个awk 脚本通常由BEGIN语句+模式匹配+END语句三部分组成,这三部分都是可选项

工作原理:

第一步执行BEGIN 语句

第二步从文件或标准输入读取一行,然后再执行pattern语句,逐行扫描文件到文件全部被读取

第三步执行END语句

echo "hello world" | awk 'BEGIN{ print "welcome" } END{ print "2017-08-08" }'

welcome

2017-08-08

echo -e  "hello world" | awk 'BEGIN{ print "welcome" } {print} END{ print "2017-08-08" }'

welcome

hello world

2017-08-08

#不加print参数时默认只打印当前的行

[root@mingongge ~]# echo |awk '{ a="hello"; b="nihao"; c="mingongge"; print a,b,c; }'

hello nihao mingongge

#使用print以逗号分隔时,打印则是以空格分界

echo |awk '{ a="mgg"; b="mingg"; c="mingongge"; print a" is "b" or "c; }'

mgg is mingg or mingongge

#awk的print语句中双引号其实就是个拼接作用

awk 的变量使用:

   内置变量

$0       #当前记录

$1~$n    #当前记录的第N个字段

FS       #输入字段分隔符(-F相同作用)默认空格

RS       #输入记录分割符,默认换行符

NF       #字段个数就是列

NR       #记录数,就是行号,默认从1开始

OFS      #输出字段分隔符,默认空格

ORS      #输出记录分割符,默认换行符

 外部变量传入

[mingongge@ ~]#a=100

[mingongge@ ~]#b=100

[mingongge@ ~]#echo |awk '{print v1*v2 }' v1=$a v2=$b

10000

awk 运算与判断:

     算术运算符

+ -  加减

* / & 乘 除 求余

^ *  求幂

++ -- 增加或减少,作为前缀或后缀

[mingongge@ ~]#awk 'BEGIN{a="b";print a,a++,a--,++a;}'

b 0 1 1

[mingongge@ ~]#awk 'BEGIN{a="0";print a,a++,a--,++a;}'

0 0 1 1

[mingongge@ ~]#awk 'BEGIN{a="0";print a,a++,--a,++a;}'

0 0 0 1

#和其它编程语言一样,所有用作算术运算符进行操作,操作数自动转为数值,所有非数值都变为0

     赋值运算符

= += -= *= /= %= ^= **=

正则运算符

~ !~  匹配正则表达式/不匹配正则表达式

     逻辑运算符  

||  &&  逻辑或  逻辑与

关系运算符

< <= > >= != =

其它运算符

$      字段引用

空格   字符串链接符

?:     三目运算符

ln     数组中是否存在某键值

awk 正则:

^    行首定位符

$    行尾定位符

.    匹配任意单个字符

*    匹配0个或多个前导字符(包括回车)

+    匹配1个或多个前导字符

?    匹配0个或1个前导字符

[]   匹配指定字符组内的任意一个字符/^[ab]

[^]  匹配不在指定字符组内的任意一个字符

()   子表达式

|    或者

\    转义符

~,!~ 匹配或不匹配的条件语句

x{m}  x字符重复m次

x{m,} x字符至少重复m次

X{m,n} x字符至少重复m次但不起过n次(需指定参数-posix或--re-interval)

本文转自 民工哥 51CTO博客,原文链接:http://blog.51cto.com/mingongge/1981142

Linux系统命令三剑客之 awk相关推荐

  1. Linux文本三剑客之一——awk详解(1)——awk看这两篇就够啦~PS:文末有练习,来练练手吧

    shell编程三剑客 grep --> egrep --> 文本过滤 查询 awk 文本截取 sed  文本的替换和修改 目录 awk awk也可以做小数运算 awk命令简要处理流程 aw ...

  2. linux 匹配文本中的ip,linux文本三剑客匹配网卡IP地址大PK(CentOS 7系统)

    运维工程师在做配置的过程中很多时候都需要去获取目标服务器网卡上的IP地址,那究竟用什么方式获取更便捷了,博主今天就带大家使用linux文本三剑客分别获取一下网卡的IP地址,最后我们再来对比一下. 实验 ...

  3. Linux文本三剑客--grep、sed、awk

    Linux文本三剑客–grep.sed.awk 文章目录 Linux文本三剑客--grep.sed.awk 1.grep 1.1什么是grep 1.2使用grep 命令格式 命令参数 基本正则表表达式 ...

  4. linux三剑客之awk命令详解

    linux三剑客之awk命令详解 awk 是一个处理文本的编程语言工具,能用简短的程序处理标准输入或文件.数据排序.计算以及生成报表等等.awk工具主要用于格式化输出,可以用类似于处理表格的方式处理文 ...

  5. linux三个冒号加端口,不看绝对后悔的Linux三剑客之awk实战精讲

    一.Linux三剑客之awk命令精讲 第1章 awk基础入门 1.1 awk简介awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告(excel).处理的数据可以是 ...

  6. Linux系统Shell脚本第五章:shell数组、正则表达式及文件三剑客之AWK

    目录 一.shell数组 1.数组分类 2.定义数组方法 二.正则表达式 1.元字符 2.表示次数 3.位置锚定 4.分组 5.扩展正则表达式 三.文本三剑客之AWK 1.awk 2.使用格式 3.处 ...

  7. linux系统print命令,Linux系统命令大全

    命令是Linu__操作系统的利器,务必掌握好,当然不可能一下子熟练掌握,但是只要多加练习,就可熟能生巧,运用自如.下面就让小编带你去看看那些Linu__系统命令大全,希望能帮助到大家! 教程 | Li ...

  8. 文本三剑客之AWK详解

    文本三剑客之AWK awk简介 AWK是一种优良的文本处理工具.它不仅是 Linux中也是任何环境中现有的功能最强大的数据处理引擎之一.这种编程及数据操作语言(其名称得自于它的创始人 Alfred A ...

  9. linux文本三剑客演讲稿,linux文本三剑客之grep

    grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正 ...

最新文章

  1. Windows Phone开发(39):漫谈关键帧动画上篇 转:http://blog.csdn.net/tcjiaan/article/details/7550506...
  2. Javascript:getElementById()点innerHTML联合用法(对比演示)
  3. 牛客练习赛71C-数学考试【容斥,dp】
  4. 前端学习(2345):uniapp学习
  5. 为什么有些没读过书的人做生意却很厉害?
  6. layuimini 图标颜色便捷指定
  7. .NET Remoting Security使用小结 – TcpChannel
  8. 扩展Editplus为Java IDE
  9. maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
  10. 马化腾入选《财富》领袖50强;微博出海布局AI;Android手机爆发病毒 | 一周业界事...
  11. android唯一机器码生成方案_分布式系统唯一ID生成方案汇总
  12. Vue2.0进阶组件篇2 解析饿了么(spinner组件)
  13. el-input只能输入数值和小数点,并且不显示上下箭头
  14. android assets目录在哪,Android Studio 中 assets目录的使用
  15. 游戏启动是html,陈书艺:推动游戏前行 开启HTML5游戏之门
  16. 基于视觉SLAM的无人机仿真-px4-gazebo
  17. 恢复svn服务器误删的文件,SVN删除文件及其恢复问题详解
  18. 【笔记整理】面试笔记
  19. 成功将TTF字体从18M裁剪到1.8M
  20. 网易云课程:深度学习与PyTorch入门实战

热门文章

  1. win7系统, vim的_vimrc文件无法修改
  2. 令人头疼的clientTop、scrollTop、offsetTop
  3. BeautifulSoup解析库详解
  4. iOS Swift GCD 开发教程
  5. [测试]将TestCase整合
  6. projecteuler_problem6
  7. 从程序语言排行榜来解读IT及Web的发展
  8. apache+php为什么不报错
  9. 三种运动让身高增长4-10cm
  10. Android Stdio 插件谷歌兼容库Appcompat