文档详情

shell-awk.docx

发布:2017-05-04约7.27千字共12页下载文档
文本预览下载声明
Shell脚本之awk详解一.基本介绍1.awk:? awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的。awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割。2.功能:流控制、数学运算、进程控制、内置的变量和函数、循环和判断3.工作原理:awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。(1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里(2)使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100)(3)输出的时候按照内置变量OFS(out FS),输出(4)读入下一行继续操作简单实例[root@tx3 ~]# echo this is a book awk.txt[root@tx3 ~]# awk {print $2,$1,$3,$4} awk.txtis this a book4. ? Awk常用内置变量表:1 $0 ? ? ? ? ? ? 当前记录(作为单个变量) ?2 $1~$n ? ? ? ? ?当前记录的第n个字段,字段间由FS分隔 ?3 FS ? ? ? ? ? ? 输入字段分隔符 默认是空格 ?4 NF ? ? ? ? ? ? 当前记录中的字段个数,就是有多少列 ?5 NR ? ? ? ? ? ? 已经读出的记录数,就是行号,从1开始 ?6 RS ? ? ? ? ? ? 输入的记录他隔符默 认为换行符 ?7 OFS ? ? ? ? ? ?输出字段分隔符 默认也是空格 ?8 ORS ? ? ? ? ? ?输出的记录分隔符,默认为换行符 ?9 ARGC ? ? ? ? ? 命令行参数个数 ?10 ARGV ? ? ? ? ? 命令行参数数组 ?11 FILENAME ? ? ? 当前输入文件的名字 ?12 IGNORECASE ? ? 如果为真,则进行忽略大小写的匹配 ?13 ARGIND ? ? ? ? 当前被处理文件的ARGV标志符 ?14 CONVFMT ? ? ? ?数字转换格式 %.6g ?15 ENVIRON ? ? ? ?UNIX环境变量 ?16 ERRNO ? ? ? ? ?UNIX系统错误消息 ?17 FIELDWIDTHS ? ?输入字段宽度的空白分隔字符串 ?18 FNR ? ? ? ? ? ?当前记录数 ?19 OFMT ? ? ? ? ? 数字的输出格式 %.6g ?20 RSTART ? ? ? ? 被匹配函数匹配的字符串首 ?21 RLENGTH ? ? ? ?被匹配函数匹配的字符串长度 ?二.print的简单使用例:打印整行: $0[root@tx3 ~]# cp /etc/passwd p1[root@tx3 ~]# awk {print $0} p1例:打印每行的最后一个字段: $NF[root@tx3 ~]# awk -F : {print $NF} p1例:打印第三个字段: $3[root@tx3 ~]# awk -F : {print $3} p1例:打印第一行NR==1[root@tx3 ~]# awk NR==1{print $0} p1root:x:0:0:root:/root:/bin/bash例:打印最后一行[root@tx3 ~]# awk END{print $0} p1tx:x:500:500:tx:/home/tx:/bin/bash例:打印第一行最后一个字段[root@tx3 ~]# awk -F: NR==1{print $NF} p1/bin/bash例:打印最后一行最后一个字段[root@tx3 ~]#awk -F: END{print $NF} p1例:打印每行的倒数第二个字段,并在其后打印你好[root@tx3 ~]# awk -F: {print $(NF-1),nihao} p1/root nihao/bin nihao/sbin nihao例:打印行号[root@tx3 ~]# awk {print NR,$0} p11 root:x:0:0:root:/root:/bin/bash2 bin:x:1:1:bin:/bin:/sbin/nologin3 daemon:x:2:2:daemon:/sbin:/sbin/nologin例:打印当前系统环境变量的某个特定值[root@tx3 ~]# awk BEGIN{print ENVIRON[PATH];}/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:
显示全部
相似文档