记录学习过程中的点点滴滴
awk学习笔记【一】
今天主要介绍下awk中内置的String函数和awk中内置的变量。
awk中内置的string函数
- index(in, find): 在 string “in”中查找 find 的第一次出现位置,返回的find在in中第一个字符出现的位置,从1开始
awk 'BEGIN { print index("peanut", "an") }' # 打印3
- length(string) : 返回字符串的长度,如果是number类型,返回对应字符的长度
- match(string, regexp) : 正则匹配regexp的规则,如果匹配,则返回对应第一个字符的位置
- split(string, array, fieldsep) : 按照fieldsep分割字符串,并将结果放置到array中,array的下标从1开始
split("yaronspace.cn", fields, ".") # fields[1] = "yaronspace" # fields[2] = "cn"
- sprintf(format, expression1, …): 格式化字符串
- sub(regexp, replacement, target): 将第一个匹配的regexp的部分使用replacement替代,替代后的结果还是保存在target变量中。所以target必须是变量,不可为字符常量
str = "yaronspace.cn"; sub(/yaronspace/, "xiaofangdeng", str); # str="xiaofengdeng.cn"
使用&符号引用匹配regexp部分的字符长,示例如下:
str = "yaronspace.cn"; sub(/yaronspace/, "&_xiaofangdeng", str); # str = "yaronspace_xiaofangdeng.cn"
- gsub(regexp, replacement, target): 与sub功能类似,但是会替换所有匹配regexp的子串,g代表”global”的含义
- substr(string, start, length) : 获取子串
- tolower(string) : 转化为小写
- toupper(string) : 转化为大写
awk中内置的变量
- FS: Input Field Seperator variable: 对每行记录的分割符,可以通过-F参数修改,或者在awk文件中,直接使用FS=”XX”进行修改
- OFS : Output Field Seperator variabble: 输出时默认每个记录的分隔符,默认为空格
$ awk -F':' '{print $3,$4;}' /etc/passwd # $3 $4以空格分割 $ awk -F':' 'BEGIN{OFS="_"} {print $3, $4}' # 此时$3 $4是以_分割
- RS : Input Record Seperator variable: 记录的默认分隔符,默认为\n换行符
可以修改,如将其修改为\n\n,以两个空行为分隔符 - ORS: Ouput Record Seperator variable: 默认的记录的输出的分隔符,默认为\n
- NR: Number of records variable: 当前已读取记录数,默认情况为当前的行数
- NF: Number of fields vairable : 当前记录的域的个数
- FILENAME : Name of the current input file
- FNR: Number of Records relative to the current input file : 当awk的输入文件只有一个时,NR == FNR;当awk的输入文件时多个时,FNR是当前文件的当前行数,NR是全局的行数
参考文章:
1. http://www.staff.science.uu.nl/~oostr102/docs/nawk/nawk_92.html
来自yaronspace.cn 本文链接:http://yaronspace.cn/blog/archives/1641您可能对下面文章也感兴趣:
这篇文章由admin于2014 年 06 月 04 日 19:28发表在shell编程。你可以订阅RSS 2.0 你可以跳到结尾直接评论。目前不允许通知。 |