awk内置变量及字符串函数
内置变量表:
| 内置变量 | 含义 |
| $0 | 整行内容 |
| $1-$n | 当前行的第1-第n个字段内容 |
| NF | 当前行的字段个数,也就是列数 |
| NR | 当前行行号 |
| FNR | 多文件处理时,行号,但是每个文件行号从0开始 |
| FS | 输入字段分割符,默认为空格和tab |
| RS | 默认行分隔符,默认回车换行 |
| OFS | 输出字段分隔符,默认为空格 |
| ORS |
输出行分隔符,默认为回车 |
| FILENAME |
处理文件名 |
| ARGC |
命令行参数个数 |
| ARGV | 命令行参数数组 |
awk内置字符串函数:
| gsub(r,s) | 在整个$0中用s替代r |
| gsub(r,s,t) | 在整个t中用s替代r |
| index(s,t) | 返回s中字符串t的第一位置 |
| length(s) | 返回s长度 |
| match(s,r) | 测试s是否包含匹配r的字符串 |
| split(str,arr,fs) | split使用域分隔符fs将字符串str划分为指定序列arr。 |
| sprint(fmt,exp) |
返回经fmt格式化后的exp sprint函数类似于printf函数(以后涉及),返回基本输出格式fmt的结果字符串exp。 |
| sub(r,s) | 用$0中最左边最长的子串代替s |
| substr(s,p) | 返回字符串s中从p开始的后缀部分 |
| substr(s,p,n) | 返回字符串s中从p开始长度为n的后缀部分 详细说明一下各个函数的使用方法。 |
| gensub(a,b,c[,d]) | 全局替换,匹配正则a, 用b替换,c为指定替换目标是第几次匹配,d为指定替换目标是哪个域如$1,$2,若无d指$0,返回值为target替换后内容(未替换还是返回 target原内容),与sub、gsub不同的是,target内容替换后不改变。 |
| gensub(/123/,"x",1,$1) | 替换$1中 第一次匹配到的123为字符x,返回值为$1替换后的内容,且$1的内容并没有改变 |
| gensub(/a(.*)b/,"\\1",1) | 返回值为匹配正则第1对()内的内容 |
| gensub(/a(.*)b(.*)c/,"\\2",1) | 返回值为匹配正则第2对()内的内容 |

浙公网安备 33010602011771号