您的位置:首页 > 其它

马哥视频课程学习笔记 gawk

2016-09-16 00:22 162 查看
gawk : pattern scaning and processing language
主要用于文本格式化输出
一次读取一行文本,按照输入分隔符进行切片$0 (代表整行)$1 $2 ...,对某些切片进行模式匹配(条件判断),输出

基本用法:gawm [option] `program` FILE ...

program: pattern{action statements}
动作语句之间用分号分割
print,printf

选项(option)
-F:指明输入时用到的字段分隔符,默认为空白符号
-v:实现自定义变量 var=value
每一个-v定义一个变量

1.print item1,item2
1.用逗号进行分隔
2.输出的item可以是字符串、数字、当前记录的字段、变量或表达式
3.如省略item 默认打印$0,整行

2.变量 -v
内建变量:
FS:input field seperator,默认为空白字符
OFS:output field seperator,默认为空白字符
RS:input record field seperator,输入的换行符
ORS:output record seperator,输出的换行符

NF:number of field,记录每一行有多少个字段
NR:number of record,记录一个文件中有多少行

ARGC:参数个数
ARGV:参数

自定义变量:
-v var=variable
变量名区分字符大小写
在program中直接定义
3.printf命令
格式化输出:printf FORMAT, items...
1.format必须给出
2.不会自动换行,需要\n
3.format中需要非别为后面的每个item制定一个格式化符号
格式化符号
%c 、%d、 %e 、%f 、 %g 、 %s 、%u
- 左对齐
+ 带符号
m.n 位数
模式匹配符:
~ 匹配
!~ 不匹配
逻辑操作符
&& || !
函数调用:
function_name(argument1,argument2,...)
内建条件表达式
selector?if-true:if-false
例: awk -F: '{$user>500?usertype=comman_user:usertype=systemadmin or system_user printf '%s:%s',$user,usertype}' /etc/passwd
5.pattern
empty 空模式,匹配每一行
/regular expression/仅处理能够被此处的模式匹配到的行
!/regular expression/
relation expression
关系表达式(布尔表达式),结果为真的被处理
行范围 line ranges,不能像sed那样直接使用数字
/re expression/,/re expression/
'(NR>= && NR<=)   {}'
BEGIN{} END{}
awk处理文件的每一行之前和之后进行的处理方法
6.常用的action
expression
control statements:if-else   while  for
compound statement:组合语句
input statement
output statement
7.控制语句
if(condition){statement} else {statement}
while (condition) {statement}
for(expr1;expr2;expr3){statement}
break
continue
next
{statements}
8.array
关联数据

9.函数
内置函数
数值处理:
rand():返回0和1之间的一个随机数
字符串处理
length()返回指定字符串的长度
sub(r,s,[t]) 以r的模式匹配t,第一个匹配到的用s替换
gsub(r,s,[t])以r的模式匹配t,所有匹配到的内容用s替换
split(s,a[,r]) 以r为分隔符切割字符s,并将切割后的结果保存至a所表示的数组中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: