shell的awk简单用法

最近用了下AWK,所以先记录点东西,以后完成后在添加。

awk 用法:awk ' pattern {action} '  

变量名 含义
ARGV                命令行参数数组
ENVIRON             环境变量数组
FILENAME    当前输入文件名
FNR    当前文件中的记录号
FS    字段分隔符   默认应该为空格
IGNORECASE    忽略正则表达式和串的大小写
NF    当前记录中的列数
NR    至今读取的行数
OFMT    数的输出格式,缺省为"%.6g"
OFS    输出字段分隔符
ORS    输出记录分隔符 默认应该为换行
RS    输入记录分隔符
RSTART    由match() 匹配的第一个字符的索引
RLENGTH    由match() 匹配的串的长度
SUBSEP    下标分隔符,缺省为"?34"

 

内置字符串函数

gsub(r,s,t)      在字符串t中,用字符串s替换和正则表达式r匹配的所有字符串。返回替换的个数。 如果没有给出t,缺省为$0
index(s,t)       返回s 中字符串t 的位置,不出现时为0
length(s)        返回字符串s 的长度,当没有给出s时,返回$0的长度
match(s,r)       返回r 在s 中出现的位置,不出现时为0。设置RSTART和RLENGTH的值
split(s,a,r)     利用r 把s 分裂成数组a,返回元素的个数。如果没有给出r,则使用FS。数组分割和字段分割采用同样的方式
sprintf(fmt,expr_list)       根据格式串fmt,返回经过格式编排的expr_list
sub(r,s,t)       在字符串t中用s替换正则表达式t的首次匹配。如果成功则返回1,否则返回0。如果没有给出t,默认为$0
substr(s,p,n)    返回字符串s中从位置p开始最大长度为n的字串。如果没有给出n,返回从p开始剩余的字符串
tolower(s)     将串s 中的大写字母改为小写,返回新串
toupper(s)     将串s 中的小写字母改为大写,返回新串

 

 注意:通过split函数建立数组:数组的下标为从1开始的数字。这里与c语言不同

 

内置算术函数

cos(x)      返回x的余弦值
sin(x)      返回x的正弦值
int(x)      返回x的整数部分
log(x)      返回x的自然对数
sqrt(x)     返回x的平方根
antan2(x)           返回y/x的反正切,值在 -π到 π之间
rand()       返回随机数r,0 <= r < 1
srand(x)     建立rand()的随机种子,如果没有指定种子,则按当天时间。返回旧的种子

 

最后写了个自己的AWK,作用是用来把表格按列输出,然后特定位置,插入特定的值。

parse=` echo $resulta | awk  '{
        split($0,atmp);m=1;for(i=1;i<=NF;i++){ar[m]=atmp[i];m++}}
        END{    v=0;for(x in ar)v++;                   #计算有多少个数组元素
                for(i=1;i<=10;i++){                    #列数
                      for(m=i;m<=v;m+=10){             #元素个数
                          if(m>=1 && m<=10){           #第一列的元素后面插入30
                               printf ar[m]"%c",30;}
                          else if(m==len){             #最后一个不需要插入了
                               printf ar[m];}
                          else if(m>len-10){           #一列的最后一个元素和第二列第一个元素插入29
                               printf ar[m]"%c",29;}
                          else{                        #其它地方插入31
                               printf ar[m]"%c",31;}
                              }
                          }
}'`

你可能感兴趣的:(shell,awk,action,记录,东西)