awk使用示例分析(awk,开发技术)

时间:2024-05-06 04:46:39 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    awk%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B%E5%88%86%E6%9E%90

awk是一个强大的文本分析工具。

awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 awk 的确拥有自己的语言: awk 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

-F 指定分隔符,而不以默认的空白(空格符或者制表符)

-v 指定变量

-f 指定脚本的文件名,即将脚本放入一个文件当中,避免 awk 书写太长,影响视觉,和重复编写

BEGIN 关键字会执行一次指定的脚本段

END 关键字定义的脚本段,在所有操作完成之后

处理数据的脚本段在第二个程序中定义

++ -- 增加与减少(前置或后置)

^ ** 指数(右结合性)

! + - 非、一元加号、一元减号

* / % 乘、除、余数

+ - 加、减

< <= == != > >= 比较

&& 逻辑AND( 简写)

|| 逻辑OR( 简写)

?: 三元条件式

= += -= *= /= %= ^= **= 赋值( 右结合性)

$ 后面跟数字,表示获取指定列的域,0 代表取整条记录

ARGC 命令行参数个数

ARGV 命令行参数构成胡数组

FILENAME 当前输入文件的文件名

FS 设置输入域分隔符,等价于命令行 -F选项

OFS 输出域分隔符

RS 控制记录分隔符

ORS 输出记录分隔符

NF 浏览记录的域的个数

NR 已读的记录数

FNR 与NR功用类似,不同的是awk每打开一个新文件,FNR便从0重新累计

IGNORECASE 是否忽略大小写

记录 默认指的是每行,因为记录分隔符(RS)是换行符
域 默认指的是每个单词,因为域分隔符(FS)是空格

awk 通过内建变量 ARGC ( 参数计数 ) 与 ARGV ( 参数向量,或参数值 ) ,让命令行参数可用。

cat showargs.awk BEGIN { print "ARGC= ", for 0; k<ARGC; k++)

数组

正则表达式元字符

^ 行首定位符

$ 行尾定位符

. 匹配除换行之外的单个字符

\* 匹配0个或者多个前导字符(这里是前导字符0或者多个,任意一个或多个字符,使用 .* )

+ 匹配一个或者多个前导字符

? 匹配0个或者1个前导字符

[] 指定字符中的任意一个字符,比如[Ll] [a-z]

[^] 上面一样,不匹配的字符

AA|BB 匹配AA或者BB

(AB)+ 匹配一个或者多个AB组合,比如AB,ABAB,ABABAB...

\* 匹配*本身

& 保存查找匹配到的串,可以用在后面的替换中 s/love/**&**/

内置函数

sub(/reg/,替换串[,目标串])

gsub(/reg/,替换串[,目标串])

index(str,sub_str) 返回sub_str第一次在str中出现的位置(偏移量从1开始)

length(str) 返回字符串的字符个数

substr(str,start_pos[,length]) 返回子串,如果没有length,就到串的末尾

match(str,/reg/) 返回正则匹配在字符串中的位置,同时设置RSTART和RLENGTH的值

split(str,arr_name[,split_sig])

atan2(x,y)

cos(x)

exp(x)

log(x)

sin(x)

sqrt(x)

int(x)直接舍去小数,保留整数部分

rand() 产生随机数(0~1) srand(x) 初始化随机数种子

默认情况下每次调用rand(),结果都会产生相同的随机数,这时候需要调用srand()重新产生一个种子,后面的随机数才不同

条件语句和循环

系统交互

如果处理逻辑复杂,就将代码写进文件里,再通过 -f 引用;这样可防止敲错代码。

灵活调用系统命令,内置变量,使代码更简洁。

处理大文件时,多审核优化逻辑代码,可有效提高执行效率。

本文:awk使用示例分析的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Python微信公众号开发平台的示例分析下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18