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对()内的内容

 

posted @ 2023-02-23 17:01  弗拉宾教头  阅读(73)  评论(0)    收藏  举报