Linux命令-awk
简介
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。
之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。AWK作为Linux三剑客(grep:过滤文本、sed:修改文本),主要用于处理文本。其拥有完备的语言语法,该实用工具扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式。如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。
其语法始终为 awk '{pattern + action}' 或者 awk 'pattern {action}'
参数
-F fs or –field-separator fs 指定输入文件分隔符,fs是一个字符串或者是一个正则表达式,如-F:
-v var=value or –asign var=value 赋值一个用户定义变量
-f scripfile or –file scriptfile 从脚本文件中读取awk命令。
-W help or –help, -W usage or –usage 打印全部awk选项和每个选项的简短说明。
-W re-interval or –re-inerval 允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。
-W source program-text or –source program-text 使用program-text作为源代码,可与-f命令混用。
-W version or –version 打印bug报告信息的版本。
预定义变量
$0: 代表当前行(相当于匹配所有)
$n: 代表第n列,以-F参数为分隔符,默认为空格
NF: 记录当前统计总字段数
NR: 用来记录行号
FS: 指定文本内容分隔符(默认是空格)
OFS: 指定打印分隔符(默认空格),FS的优先级要高于-F
IGNORECASE:1表示忽略大小写
执行顺序
BEGIN{} : 最开始执行
// : 正则
{} : 循环体
END{} : 最后执行
函数
print : 打印
printf : 格式化打印
%s : 字符串
%d : 数字
- : 左对齐
+ : 右对齐
15 : 至少占用15字符
表达式
#比较文本
> : 小于
< : 大于
>= : 小于等于
<= : 大于等于
~ : 正则匹配(包含)
!~ : 正则匹配(不包含)
in : 数组成员
#比较非文本,注意文件中读取的“数字”也是作为文本的
== :等于
> :大于
< :小于
>= :大于等于
<= :小于等于
#逻辑表达式
&& : 逻辑与
|| : 逻辑或
! : 逻辑非
#算术表达式
+ :加
- :减
* :乘
/ :除
% :求余
#赋值运算
=
+=
-=
*=
/=
%=
^=
**=
流程控制
流程控制只存在循环之中
if:条件判断语句
if(){} : 单分支
if(){}else{} : 双分支
if(){}else if(){}else{}: 多分支
for:循环for
for(i="初始值":条件判断:游标){}
while: while循环
while(条件判断){}
除非注明,文章均为原创,转载请以链接形式标注本文地址
本文地址:http://bioschool.cn/baseability/linux/linux%e5%91%bd%e4%bb%a4-awk/