awk用法指北
awk是对Linux系统中文本三剑客之一。其功能强大,支持条件判断、数组、循环,并且内置大量函数,近乎于一门独立的编程语言。
awk基本语法
awk [option] ‘program’ FILE
最常用选项
-F “” 指定字段分隔符 //分隔符为PATTERN
-v VAR=value 指定变量
AWK变量
awk中变量替换不能使用引号
-
内建变量
FS 输入分隔符
OFS 输出分隔符
RS 输入时的换行符
ORS 输出时的换行符
NF 字段数量
NR 行数 //多文件行数累加
NFR 行数 //多文件行数分别计算
ARGC 命令行参数的个数
ARGV 保存命令行中给定的各个参数 //数组形式保存各个参数,ARGV[0]为awk ARGV[1]为$1 ARGV[2]为$2.. -
自定义变量
选项中自定义变量
awk -v VAR=value
在program直接定义
awk ‘{VAR=value}’
program
-
print
print item1,item2..
用,(逗号)为个元素分隔符
输出可以是字符串、数值、当前记录的字段、变量或者awk表达式
省略item为打印整行 -
printf
printf FORMAT item1,item2..
FORMAT为格式符必须给出 printf不能自动换行,需要换行时需要给出\n
FORMAT需要指出后面每一个item的格式符
格式符
%c 显示字符的ASCII码 %d %i 显示十进制整数 %e %E 显示科学计数法数值 %f 显示浮点数%g %G以科学计数法或浮点形式显示数值 %s 显示字符串 %u 显示无符号整数 %% %自身
修饰符
#[.#] 第一个数字显示宽度,第二个数字小数点后的精度。第一个数字前-为左对齐(默认右对齐)+显示数值的符号 -
操作符
算数操作符
x+y x-y x*y x/y x^y x%y -x正数转换为负数 +x字符串转换为数值
字符串操作符
无符号表示字符串连接
赋值操作符
= += -= *= /= %= ^=
++ —
比较操作符
> >= < <= != ==
模式匹配符
~ 匹配 !~ 不匹配
逻辑操作符
&&与 ||或 !非
函数
fun_name(p1 p2 p3)
条件表达式
selector?if-true-expr:if-false-expr -
定界符
定界符为空时表示处理文件的每一行
/正则表达式/仅处理正则表达式匹配的行 关系表达式处理为真的行与bash不同真为非0值 -
常用动作
表达式
控制语句
组合语句
输入声明
输出声明 -
控制语句
if(condition){statements} //单分支if语句
if(condition){statements}else{statements} //双分支if语句
while(condition){statements} //while循环
do{statements}while(condition) //do-while循环,判断之前先进行一次循环体
for(expr1;expr2;expr3){statements} //C语言风格for循环
switch(expr){case 1:statement1;case 2:statement2;..default:statement //switch语句case中匹配的项可以是常量也可以是正则匹配}
break[#] //跳出#层循环
continue //提前结束本轮循环,继续下一轮循环
next //控制行间跳转
delete array[index] //删除数组中的某条
delete array //删除整个数组
exit //退出 -
数组
数组形式
array[index]
index可使用任意字符串,需要用双引号“”;数组不存在,在引用时自动创建此元素,初始化为“空串”
for(var in array){for-body} //遍历数组,var为数组索引 -
内置函数
length([String]) //获得字符串的长度
sub(r,s[,t]) //用r表示的模式查找t中的字符串,并将第一次出现的内容替换为s表现的内容
gsub(r,s[,t]) //用r表示的模式查找t中的字符串,并将全部出现的内容替换为s表现的内容
原创文章,作者:easyTang,如若转载,请注明出处:http://www.178linux.com/76665