[TOC] ## 概述 对文件中的每一行 对进行 awk 处理 如: 以空格为分界线,处理每一行,获取开头 ``` > ll total 4 drwxr-xr-x. 3 root root 32 Sep 4 13:40 cache drwxr-xr-x. 13 root root 4096 Sep 19 15:57 github.com drwxr-xr-x. 3 root root 14 Sep 4 13:40 golang.org drwxr-xr-x. 4 root root 48 Sep 4 14:03 gopkg.in drwxr-xr-x. 5 root root 63 Sep 4 14:38 xorm.io > ll | awk '{print $1}' total drwxr-xr-x. drwxr-xr-x. drwxr-xr-x. drwxr-xr-x. drwxr-xr-x. ``` ## 命令 ``` -F 指定间隔符默认为空格 , awk -F'.' '{print $3}' 以点做分割 ``` ### $符 $0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。 ### print和printf print ``` > ll | awk '{print "dir:",$1}' dir: total dir: drwxr-xr-x. dir: drwxr-xr-x. dir: drwxr-xr-x. dir: drwxr-xr-x. dir: drwxr-xr-x. ``` printf ``` > ll | awk '{printf "dir:%s\n",$1}' dir:total dir:drwxr-xr-x. dir:drwxr-xr-x. dir:drwxr-xr-x. dir:drwxr-xr-x. dir:drwxr-xr-x. ``` ### awk内置变量 ``` ARGC 命令行参数个数 ARGV 命令行参数排列 ENVIRON 支持队列中系统环境变量的使用 FILENAME awk浏览的文件名 FNR 浏览文件的记录数 FS 设置输入域分隔符,等价于命令行 -F选项 NF 浏览记录的域的个数 NR 已读的记录数 OFS 输出域分隔符 ORS 输出记录分隔符 RS 控制记录分隔符 ``` 实例 ``` > ll | awk '{print NR,$1}' 1 total 2 drwxr-xr-x. 3 drwxr-xr-x. 4 drwxr-xr-x. 5 drwxr-xr-x. 6 drwxr-xr-x. ``` ### awk编程 #### 变量和赋值 #### 条件语句 #### 循环语句 #### 数组 ## 其他 ### 可同时 print 多次 ``` > ll | awk '{print $1} {print $1} total total drwxr-xr-x. drwxr-xr-x. drwxr-xr-x. drwxr-xr-x. drwxr-xr-x. drwxr-xr-x. drwxr-xr-x. drwxr-xr-x. drwxr-xr-x. drwxr-xr-x. ```