白银做网站的董事,wordpress模板搬迁,江苏省建设厅网站是,医院网上预约awk
用于在linux/unix下对文本和数据进行处理,支持用户自定义函数和动态正则表达式等先进功能。
命令格式#xff1a; awk BEGIN{ print “start” } pattern { commend } END{print end} file
awk BEGIN{ print “start” } pattern { commend } END{pr…awk
用于在linux/unix下对文本和数据进行处理,支持用户自定义函数和动态正则表达式等先进功能。
命令格式 awk BEGIN{ print “start” } pattern { commend } END{print end} file
awk BEGIN{ print “start” } pattern { commend } END{print end} file awk命令也可以从stdin中读取
构成BEGIN语句块、能够使用模式匹配的通用语句块、END语句块。这三个部分是可选的。任意一个部分都可以不出现在脚本中。
awk的工作原理:
第一步执行BEGIN{ commands }语句块中的语句 第二步从文件或标准输入(stdin)读取一行然后执行pattern{ commands }语句块它逐行扫描文件从第一行到最后一行重复这个过程直到文件全部被读取完毕。 第三步当读至输入流末尾时执行END{ commands }语句块。
内置变量: ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
$0 这个变量包含执行过程中当前行的文本内容
$1~$n 这个变量包含第1(n)个字段的文本内容 常用选项 -F fs 指定用于输入数据的列分隔符fs
-v varvalue 在awk程序执行之前指定一个值value变量给var。这些变量值用于awk程序的BEGIN块
-f program-file 指定一个awk程序文件代替在命令行指定awk指令 打印指定的列
输出格式print和printf(可指定格式) - print的使用格式print item1, item2, … - printf的使用格式printf format, item1, item2, … $ awk {print $1,$2} a.txt 打印a.txt文件的第一列第二列 设置字段定界符 $ awk -F:{print $NF} /etc/passwd 或者
$ awk BEGIN{ FS: }{ print $NF } /etc/passwd 模式
有以下四种模式 一/正则表达式/使用通配符的扩展集。 二关系表达式使用运算符进行操作可以是字符串或数字的比较测试。 三模式匹配表达式用运算符 ~匹配和 ~!不匹配。 四BEGIN语句块、pattern语句块、END语句块
操作
由一个或多个命令、函数、表达式组成之间由换行符或分号隔开并位于大括号内 主要部分变量或数组赋值,输出命令,内置函数,控制流语句
传参
传外部变量给awk -v 可以将外部值并非来自stdin传递给awk var10000 echo | awk -v variable$var { print variable } 另一种传递外部变量方法 var1aaa var2bbb echo | awk { print v1,v2 } v1$var1 v2$var2 当输入来自于文件时使用 awk { print v1,v2 } v1$var1 v2$var2 filename 变量之间用空格分隔作为awk的命令行参数跟随在BEGIN、{}和END语句块之后。
数组应用
awk 中的数组不必提前声明。数组元素用0或空字符串来初始化。
数组的定义
数字做数组索引 Array[1]sun Array[2]kai 字符串做数组索引 Array[first]www Array[last]name print Array[1]会打印出sunprint[“last”]会得到name。
读取数组的值 { for(item in array) {print array[item]}; } 输出的顺序是随机的
{ for(i1;ilen;i) {print array[i]}; } Len是数组的长度 数组相关函数
得到数组长度 awk BEGIN{infoit is a test;lenssplit(info,tA,); print length(tA) length(tA),lens;} 结果为4 4 length返回数组长度,split进行分割字符串为数组,也会返回分割得到数组长度。
输出数组内容无序有序输出 awk BEGIN{infoit is a test;split(info,tA, );for(k in tA){print k,tA[k];}}
4 test
1 it
2 is
3 a awk BEGIN{infoit is a test;tlensplit(info,tA, );for(k1;ktlen;k){print k,tA[k];}}
1 it
2 is
3 a
4 test 注意数组下标是从1开始与C数组不一样。
内置函数
主要分以下4种类型算数函数、字符串函数、其它一般函数、时间函数。
算数函数 格式 描述
sin( x ) 返回 x 的正弦x 是弧度。
exp( x ) 返回 x 幂函数。
log( x ) 返回 x 的自然对数。
sqrt( x ) 返回 x 平方根。
int( x ) 返回 x 的截断至整数的值。
rand( ) 返回任意数字 n其中 0 n 1。
srand( [expr] ) 将 rand 函数的种子值设置为 Expr参数的值或如果省略 Expr 参数则使用某天的时间。返回先前的种子值。 字符串函数 split( String, A, [Ere] )
将String参数指定的参数分割为数组元素A[1],A[2],...,A[n]并返回n变量的值。 tolower( String )
返回 String 参数指定的字符串字符串中每个大写字符将更改为小写。 toupper( String ) “ 返回 String 参数指定的字符串字符串中每个小写字符将更改为大写。