语法格式:

awk 'BEGIN{}pattern{commands}END{}' file_name

standard output | awk 'BEGIN{}pattern{commands}END{}'

基本格式

awk 'BEGIN{}pattern{commands}END{}'

BEGIN{} 文本处理前所做的处理

pattern{commands} 对文本具体的处理

END{} 文本处理后所做的处理

常用变量

最常用:

$0 整行

$1 首行

$  末行

$NF 通常用于指定最后一个字段

FS 列分隔符(默认为空格)

RS 行分隔符(默认为换行)

NF 有多少列

实例

awk '{print $0}' passwd 输出整行内容

awk 'BEGIN{FS=":"}{print $1}' passwd 输出所有行的第一个字段

awk '{print NF}' passwd 输出每一行的字段个数(多少列)

awk 'BEGIN{RS="--"}{print $0}' list RS 指定行分隔符: --

awk 'BEGIN{RS="--";FS="|"}{print $3}' list 

printf的用法

最常用

%s 字符串格式

%d 十进制格式

%f 浮点数格式

awk 'BEGIN{FS=":"}{printf "%s\n",$1}' passwd 打印字符串,分隔符为":",打印后换行

awk 'BEGIN{FS=":"}{printf "%20s %20s\n",$1,$7}' passwd 加入占位符美化,%20s表示占位20个字符

awk 'BEGIN{FS=":"}{printf "%-20s %-20s\n",$1,$7}' passwd "-"表示左对齐

awk 'BEGIN{FS=":"}{printf "%0.2f\n",$3}' passwd 打印浮点数,小数点后2位(默认小数点后4位)

awk的匹配模式

awk 'BEGIN{FS=":"}/root/{print $0}' passwd 匹配passwd文件行中含有root字符串的所有行

 awk '/^nginx/{print $0}' passwd 匹配passwd文件行中以nginx开头的所有行

运算符匹配

  • < 小于
  • > 大于
  • <= 小于等于
  • >= 大于等于
  • == 等于
  • != 不等于
  • ~ 匹配正则表达式
  • !~ 不匹配正则表达式

awk 'BEGIN{FS=":"}$3<50{print $0}' passwd 以 : 为分隔符,匹配passwd文件中第3个字段小于50的所有行信息

awk 'BEGIN{FS=":"}$7=="/bin/bash"{print $0}' passwd 以:为分隔符,匹配passwd文件中第7个字段为/bin/bash的所有行信息

awk 'BEGIN{FS=":"}$7!="/bin/bash"{print $0}' passwd 以:为分隔符,匹配passwd文件中第7个字段不为/bin/bash的所有行信息

awk 'BEGIN{FS=":"}$3 ~ /[0-9]{3,}/{print $0}' passwd 以:为分隔符,匹配passwd文件中第3个字段包含3个数字以上的所有行信息

布尔运算符匹配

  • || 或
  • && 与
  • ! 非

awk 'BEGIN{FS=":"}$1=="ftp" || $1=="mail"{print $0}' passwd 为分隔符,匹配/etc/passwd文件中包含ftp或mail的所有行信息

awk 'BEGIN{FS=":"}$3<50 && $4>50{print $0}' passwd 以:为分隔符,匹配/etc/passwd文件中第3个字段小于50并且第4个字段大于50的所有行信息

awk 'BEGIN{FS=":"}/^nginx/{print $0}' passwd 匹配包含 nginx开头 的行

awk 'BEGIN{FS=":"}$3==1{print $0}' passwd 关系运算符,uid 等于1的行

awk 'BEGIN{FS=":"}$3~/[0-9]{3,}/{print $0}' passwd 匹配uid(数字)为3位及以上的行

awk 'BEGIN{FS=":"}$0!~/\/sbin\/nologin/{print $0}' passwd 匹配不包含/sbin/nologin 的行

awk 'BEGIN{FS=":"}$3<50 && $7~/\/bin\/bash/ {print $0}' passwd 找出 uid 小于50,且bash为 /bin/bash 的行

语法格式

第一种形式: 基于文件

1
awk 'BEGIN{}pattern{commands}END{}' file_name

  

第二种形式: 基于标准命令格式

1
standard output | awk 'BEGIN{}pattern{commands}END{}'

shell编程:awk基础的更多相关文章

  1. shell编程awk基础介绍

    awk介绍 报告生成器,格式化文本输出 处理机制类似sed命令,自带循环处理    读入一行处理一行然后自动读取下一行再进行处理 sed命令换行的标识是固定的,只能是回车换行.    awk里面的换行 ...

  2. Linux学习笔记(17) Shell编程之基础

    1. 正则表达式 (1) 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式:通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find ...

  3. Shell编程菜鸟基础入门笔记

    Shell编程基础入门     1.shell格式:例 shell脚本开发习惯 1.指定解释器 #!/bin/bash 2.脚本开头加版权等信息如:#DATE:时间,#author(作者)#mail: ...

  4. Shell编程入门基础上

    前言 为什么学 Shell Shell 脚本语言是实现 Linux/UNIX 系统管理及自动化运维所必备的重要工具, Linux/UNIX 系统的底层及基础应用软件的核心大都涉及 Shell 脚本的内 ...

  5. shell编程awk进阶

    awk操作符 算术操作符:  x+y, x-y, x*y, x/y, x^y, x%y      -x: 转换为负数      +x: 转换为数值 字符串操作符:没有符号的操作符,字符串连接 赋值操作 ...

  6. Shell编程——bash基础知识

    # Bash中自动补全时忽略大小写 # 编辑~/.inputrc(没有的话,就新建一个),在最后加一行: set completion-ignore-case on # 若要用方向键Up,Down来搜 ...

  7. 第一部分shell编程1基础知识

    ls etc/init.d/ shell脚本的路径 ls /usr/local/apache2/ ls /usr/local/apache2/bin/apachectl 1. shell特性命令历史 ...

  8. Linux Shell编程 awk命令

    概述 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是l ...

  9. shell编程之基础

    1.初探shell #!/bin/bash echo -e 'hello \nworld' 执行结果 echo 是打印输出字符,-e选项是开启转义功能 注意: 在windows下编写的shell脚本直 ...

  10. Shell编程-控制结构 | 基础篇

    if-then-else分支结构 if-then-else是一种基于条件测试结果的流程控制结构.如果测试结果为真,则执行控制结构中相应的命令列表:否则将进行另外一个条件测试或者退出该控制结构. if- ...

随机推荐

  1. vue访问外部接口设置代理,解决跨域(vue-cli3.0)

    vue-cli3.0搭建的项目,平时访问内部接口配置了拦截器,今天需要调用天气预报的外部接口,发现跨域问题,通过配置代理解决. 1.在vue.config.js中配置代理 module.exports ...

  2. C# 列出并删除一个文件夹下的所有MD5值相同的文件

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. 【转】DDR3和eMMC区别

    转自:https://www.cnblogs.com/debruyne/p/9186619.html DDR3内存条和eMMC存储器区别: 1. 存储性质不同:2. 存储容量不同:3. 运行速度不同: ...

  4. docker技术基础

    1 Linux Namespace Linux Namespaces机制提供一种资源隔离方案.PID,IPC,Network等系统资源不再是全局性的,而是属于特定的Namespace.每个Namesp ...

  5. 牛客CSP-S提高模拟4 赛后总结

    前言 其实前面已经打了 3 场牛客 3 场计蒜客的比赛,都没有写总结,今天先提一下以前的情况 计蒜客 1 :0+0+0 = 0 (心态崩了,写挂了) 牛客 1: 0+0+0 = 0 (T1博弈论,T2 ...

  6. [sqlmap 源码阅读] heuristicCheckSqlInjection 探索式注入

    上面是探索式注入时大致调用过程,注入 PAYLOAD 1.)("'(.((.  , 数据库报错,通过报错信息获取网站数据库类型(kb.dbms),并将保存报错(lasterrorpage). ...

  7. hdu 6053: TrickGCD (2017 多校第二场 1009) 【莫比乌斯 容斥原理】

    题目链接 定义f[n]表示n是最大公约数情况下的计数,F[n]为n是公约数情况下的计数 (可以和 http://www.cnblogs.com/Just--Do--It/p/7197788.html  ...

  8. Task4.文本表示:从one-hot到word2vec

    参考:https://blog.csdn.net/wxyangid/article/details/80209156 1.one-hot编码 中文名叫独热编码.一位有效编码.方法是使用N位状态寄存器来 ...

  9. darknet-yolov3使用opencv3.4.8时,undefined reference 'imshow()'、'waitKey()'、'nameWindows()'

    解决办法:暴力卸载 卸载办法:进入到opencv3.4.8的安装目录下:make uninstall 然后重新安装了其他版本的,立马编译通过了.

  10. 对logistic回归分析的两重认识

    logistic回归,回归给人的直观印象只是要求解一个模型的系数,然后可以预测某个变量的回归值.而logistic回归在应用中多了一层含义,它经常应用于分类中.第一重认识:logistic是给真正的回 ...