来自 操作系统 2019-11-28 23:50 的文章
当前位置: 网上澳门金莎娱乐 > 操作系统 > 正文

awk

awk命令内置变量:

  • $n:一行的第n个字段
  • $0:一行的全部内容
  • ARGC:命令行的参数个数
  • ARGV:命令行参数的数组
  • CONVFMT:数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组
  • ERRNO:最后一个系统错误的描述
  • FIELDWIDTHS:字段宽度列表(用空格键分隔)
  • FILENAME:文件名
  • FNR :各文件分别计数的行号
  • FS:字段分隔符(默认是任何空格)
  • IGNORECASE:忽略大小写的匹配
  • NF:字段个数
  • NR:处理的行数
  • OFMT:数字的输出格式(默认值是%.6g)
  • OFS :字段输出分隔符
  • ORS:行输出分隔符
  • RLENGTH:由match函数所匹配的字符串的长度
  • RS:记录分隔符(默认是一个换行符)
  • RSTART:由match函数所匹配的字符串的第一个位置
  • SUBSEP:数组下标分隔符(默认值是/034)

    ### 例子

输出第一行:awk -F ":" 'NR==1{print }' /etc/passwd

输出最后一行:awk -F ":" 'END{print }' /etc/passwd

6.1 - 算术:

  1. atan2(y,x) 返回 y/x 的反正切
  2. cos(x) 返回 x 的余弦;x 是弧度
  3. sin(x) 返回 x 的正弦;x 是弧度
  4. exp(x) 返回 x 幂函数
  5. log(x) 返回 x 的自然对数
  6. sqrt(x) 返回 x 平方根
  7. int(x) 返回 x 的截断至整数的值
  8. rand() 返回任意数字 n,其中 0 <= n < 1
  9. srand([expr]) 将 rand 函数的种子值设置为 Expr 参数的值,或如果省略 Expr 参数则使用某天的时间。返回先前的种子值

awk命令是一个行处理命令,每次读取一行,然后进行处理,可以一次处理多个文件

4 - BEGIN语句块

BEGIN语句块是在匹配文件第一行之前运行的语句块。由于是匹配第一行之前运行,实际上在BEGIN语句块中 $n 是不可用的。一般情况下可以在BEGIN语句块中做一些变量(awk中可以自定义变量,直接为一个变量赋值就定义了一个变量,awk中没有专门定义变量的关键字)初始化的工作,以及一些只需要在开始仅打印一次的输出信息(例如输出表的表头)

[root@datanode1 ~]# echo -e 'words in filenthe second line' | awk 'BEGIN{print "this is begin"; print ""} {print $1 " " $2 " " $3 " "}'
this is begin

words in file 
the second line 
  1. BEGIN必须为大写
  2. BEGIN中多个语句块用;分隔
  3. 如果需要单独打印空行,需要使用 print ""

awk命令格式:

awk [-F|-f|-v] ‘BEGIN{} {command1; command2} END{}’ file1 file2 ...

分割符:-F: , -F ':',-F '[.,/]' 三种方式都可以

6.4 - awk的内置变量

awk中同样定义了很多内置变量,我们可以直接像使用普通变量一样使用他们,由于awk的版本众多,有些内置变量并不是得到所有awk版本的支持。

说明:[A][N][P][G]表示支持该变量的工具,[A]=awk、[N]=nawk、[P]=POSIXawk、[G]=gawk

  1. $n 当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段
  2. $0 这个变量包含执行过程中当前行的文本内容
  3. [N] ARGC 命令行参数的数目
  4. [G] ARGIND 命令行中当前文件的位置(从0开始算)
  5. [N] ARGV 包含命令行参数的数组
  6. [G] CONVFMT 数字转换格式(默认值为%.6g)
  7. [P] ENVIRON 环境变量关联数组
  8. [N] ERRNO 最后一个系统错误的描述
  9. [G] FIELDWIDTHS 字段宽度列表(用空格键分隔)
  10. [A] FILENAME 当前输入文件的名
  11. [P] FNR 同NR,但相对于当前文件
  12. [A] FS 字段分隔符(默认是任何空格)
  13. [G] IGNORECASE 如果为真,则进行忽略大小写的匹配
  14. [A] NF 表示字段数,在执行过程中对应于当前的字段数
  15. [A] NR 表示记录数,在执行过程中对应于当前的行号
  16. [A] OFMT 数字的输出格式(默认值是%.6g)
  17. [A] OFS 输出字段分隔符(默认值是一个空格)
  18. [A] ORS 输出记录分隔符(默认值是一个换行符)
  19. [A] RS 记录分隔符(默认是一个换行符)
  20. [N] RSTART 由match函数所匹配的字符串的第一个位置
  21. [N] RLENGTH 由match函数所匹配的字符串的长度
  22. [N] SUBSEP 数组下标分隔符(默认值是34)

awk官方文档:
https://www.gnu.org/software/gawk/manual/gawk.html

6.3 - 其他:

  1. system(command) 执行系统命令,返回退出码
  2. mktime( YYYY MM dd HH MM ss[网上澳门金莎娱乐, DST]) 生成时间格式
  3. strftime(format,timestamp) 格式化时间输出,将时间戳转换为时间字符串
  4. systime() 得到时间戳,返回从1970年1月1日开始到当前时间(不计闰年)的整秒数

6 - awk内置函数

awk定义了很多内置函数,下面我们根据函数类型列出常用的函数,下面的函数只是一部分,完整的函数列表则需要查阅awk的官方文档

本文由网上澳门金莎娱乐发布于操作系统,转载请注明出处:awk

关键词: