AWK

AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一;
awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/awk )。

AWK 常见参数

# 默认是执行打印全部 print $0
# 1为真 打印$0
# 0为假 不打印 -F # 改变FS值(分隔符)
~ # 域匹配
== # 变量匹配
!~ # 匹配不包含
= # 赋值
!= # 不等于
+= # 叠加 \b # 退格
\f # 换页
\n # 换行
\r # 回车
\t # 制表符Tab
\c # 代表任一其他字符 -F"[ ]+|[%]+" # 多个空格或多个%为分隔符
[a-z]+ # 多个小写字母
[a-Z] # 代表所有大小写字母(aAbB...zZ)
[a-z] # 代表所有大小写字母(ab...z)
[:alnum:] # 字母数字字符
[:alpha:] # 字母字符
[:cntrl:] # 控制字符
[:digit:] # 数字字符
[:graph:] # 非空白字符(非空格、控制字符等)
[:lower:] # 小写字母
[:print:] # 与[:graph:]相似,但是包含空格字符
[:punct:] # 标点字符
[:space:] # 所有的空白字符(换行符、空格、制表符)
[:upper:] # 大写字母
[:xdigit:] # 十六进制的数字(0-9a-fA-F)
[[:digit:][:lower:]] # 数字和小写字母(占一个字符)

  AWK 內建变量

$n            # 当前记录的第 n 个字段,字段间由 FS 分隔
$0 # 完整的输入记录
ARGC # 命令行参数的数目
ARGIND # 命令行中当前文件的位置 ( 从 0 开始算 )
ARGV # 包含命令行参数的数组
CONVFMT # 数字转换格式 ( 默认值为 %.6g)
ENVIRON # 环境变量关联数组
ERRNO # 最后一个系统错误的描述
FIELDWIDTHS # 字段宽度列表 ( 用空格键分隔 )
FILENAME # 当前文件名
FNR # 同 NR ,但相对于当前文件
FS # 字段分隔符 ( 默认是任何空格 )
IGNORECASE # 如果为真(即非 0 值),则进行忽略大小写的匹配
NF # 当前记录中的字段数(列)
NR # 当前行数
OFMT # 数字的输出格式 ( 默认值是 %.6g)
OFS # 输出字段分隔符 ( 默认值是一个空格 )
ORS # 输出记录分隔符 ( 默认值是一个换行符 )
RLENGTH # 由 match 函数所匹配的字符串的长度
RS # 记录分隔符 ( 默认是一个换行符 )
RSTART # 由 match 函数所匹配的字符串的第一个位置
SUBSEP # 数组下标分隔符 ( 默认值是 /034)
BEGIN # 先处理(可不加文件参数)
END # 结束时处理

  AWK 内置函数

gsub(r,s)          # 在整个$0中用s替代r   相当于 sed 's///g'
gsub(r,s,t) # 在整个t中用s替代r
index(s,t) # 返回s中字符串t的第一位置
length(s) # 返回s长度
match(s,r) # 测试s是否包含匹配r的字符串
split(s,a,fs) # 在fs上将s分成序列a
sprint(fmt,exp) # 返回经fmt格式化后的exp
sub(r,s) # 用$0中最左边最长的子串代替s 相当于 sed 's///'
substr(s,p) # 返回字符串s中从p开始的后缀部分
substr(s,p,n) # 返回字符串s中从p开始长度为n的后缀部分

  

最新文章

  1. 如何在Eclipse中查看JDK的源代码
  2. URL编码:不同的操作系统、不同的浏览器、不同的网页字符集,将导致完全不同的编码结果。
  3. 剑指Offer:面试题27——二叉搜索树与双向链表(java实现)
  4. shell切割日志脚本
  5. css中font-family的中文字体
  6. 用eclipse建立简单WebService客户端,使用WSDL,用于短信接口发送
  7. 生成JSON数据--fastjson(阿里)方法
  8. ITU-T Technical Paper: QoS 的参数(非常的全,共计88个)
  9. Python3 randrange() 函数
  10. mysql报错mmap(137428992 bytes) failed; errno 12,Cannot allocate memory for the buffer pool
  11. MongoDB分组查询,聚合查询,以及复杂查询
  12. Asp.net Core导出Excel
  13. vi简短教程
  14. TP5 自定义验证器
  15. Spark学习笔记——RDD编程
  16. oracle数据库用户加锁和解锁
  17. 【第二十九章】 springboot + zipkin + mysql
  18. Optimal Milking---poj2112(多重匹配+Floyd+二分)
  19. 浅谈Laravel框架的CSRF
  20. 在WPF中快速实现键盘钩子

热门文章

  1. 蓝牙BLE实用教程(转载)
  2. ns3 myfirst.cc 两个节点点对点通信
  3. #Leetcode# 917. Reverse Only Letters
  4. Ubuntu17安装Jenkins
  5. cglib动态代理是通过继承父类的方式进行代理的 不是通过接口方式进行动态代理的 因此可以对普通的类进行代理
  6. HUAS 2018暑假第一周比赛-题解
  7. c++ std::function
  8. Python学习---------登陆系统代码实现
  9. 学习《Unix/Linux编程实践教程》(2):实现 more
  10. Sum 南京网络赛J题