文章目录
一、简介
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具(行编译器)。
二、awk基础介绍
2.1 awk两种语法
awk [选项] ‘脚本命令’ 文件名
// 第一种
awk [选项参数] -f scriptfile var=value file(s)
// 第二种
awk [选项参数] 'script' var=value file(s)
2.2 常用参数
参数 | 注释 |
---|---|
-F fs | 指定输入文件拆分隔符,fs是一个字符串或者是一个正侧表达式,如-F |
-v | 赋值一个用户定义变量 |
-f | 从脚本中读取awk命令 |
-W | 在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。 |
’ ’ | 引用代码块 |
// | 匹配代码块,可以是字符串或正则表达式 |
{} | 命令代码块,包含一条或多条命令 |
; | 多条命令使用分号分隔 |
BEGIN | 在 awk 程序一开始,未读取任何数据之前执行。BEGIN 后的动作只在程序开始时执行一次 |
END | 在 awk 程序处理完所有数据,即将结束时执行?END 后的动作只在程序结束时执行一次 |
2.3 常用内置变量
参数 | 注释 |
---|---|
$0 | 表示整个当前行 |
$1 ~ $n | 当前记录的第N个字段 |
FS | 输入字段分隔符(默认是空格) |
RS | 输入记录分割符,默认换行符(即文本是按一行一行输入) |
NF | 字段个数就是列 |
NR | 记录数,就是行号,默认从1开始 |
FNR | 与NR类似,不过多文件记录不递增,每个文件都从1开始 |
OFS | 输出字段分隔符,默认空格 |
ORS | 输出记录分割符,默认换行符 |
\n | 换行符 |
~ | 匹配正则表达式 |
!~ | 不匹配正则表达式 |
= += -= *= /= %= ^= **= | 赋值 |
&& | 逻辑与 |
< <= > >= != == | 关系运算符 |
* / % | 乘,除与求余 |
$ | 字段引用 |
三、awk操作举例
3.1 简单操作
打印列的内容
print $n :对应着列
[root@centos1 ~]# cat test1
hello tom
hello jerry
hello zhangsan
hello lisi
[root@centos1 ~]# awk '{print $1}' test1
hello
hello
hello
hello
[root@centos1 ~]# awk '{print $2}' test1
tom
jerry
zhangsan
lisi
打印行的内容
NR==number
[root@centos1 ~]# cat test1
hello tom
hello jerry
hello zhangsan
hello lisi
[root@centos1 ~]# awk 'NR==