sub( Ere, Repl, [ In ] ) 用 Repl 参数指定的字符串替换 In 参数指定的字符串中的由 Ere 参数指定的扩展正则表达式的第一个具体值。sub 函数返回替换的数量。出现在 Repl 参数指定的字符串中的 &(和符号)由 In 参数指定的与 Ere 参数的指定的扩展正则表达式匹配的字符串替换。如果未指定 In 参数,缺省值是整个记录($0 记录变量)
gsub( Ere, Repl, [ In ] ) 除了正则表达式所有具体值被替代这点,它和 sub 函数完全一样地执行
split( String, A, [Ere] ) 将 String 参数指定的参数分割为数组元素 A[1], A[2], . . ., A[n],并返回 n 变量的值。此分隔可以通过 Ere 参数指定的扩展正则表达式进行,或用当前字段分隔符(FS 特殊变量)来进行(如果没有给出 Ere 参数)。除非上下文指明特定的元素还应具有一个数字值,否则 A 数组中的元素用字符串值来创建
awk是取自发明她的三位科学家的名字,擅长于文本处理。因最近又摊上计费这档子事情了。动不动就要给开发者查云豆消耗啊查云豆消耗。免不了要分析计费的日志。
awk 'BEGIN{ print "start" } pattern { commands } END{ print "end" }' file
也可以通过管道输入, 例如:
cat file | awk 'BEGIN{ print "start" } pattern { commands } END{ print "end" }'
awk程序由三部分组成,BEGIN语句块,END语句块,能使用模式匹配的通用语句块。这三部分任何一部分都可以省略。BEGIN语句块完成一些初始化的工作,END语句块完成一些结果输出。模式匹配,逐行的读取匹配,如果匹配成功执行后面的
commands
NR: 表示记录的数量(number of record),在执行过程中,相当于当前行号,是不断累加的。 NF: 表示当前行的字段数量(number of fields) $0 这个标量包含执行过程中当前行的文本内容 $1~$n 当前记录的第n个字段,字段间由FS分隔 RS 输入的记录分隔符, 默认为换行符 OFS 输出字段分隔符, 默认也是空格 ORS 输出的记录分隔符,默认为换行符 FILENAME 当前输入文件的名字