Linux——0*——awk
sed修改文件
awk统计切割文件
一、awk工作原理
注意:
- 图形化解释:
- 如果没有逗号 ‘,’ ,$1和$3之间将会连着被打印,因为OPS没有被逗号映射到所以未启用;
- BEGIN{} 发生在读文件前执行本命令
- {} 行处理命令
- END{} 所有行处理斗结束之后执行本命令
二、awk变量
1、awk内部变量
$0,$1,$2.......$100这些都是awk的内部变量
NF:指的是字段的数量;
$NF:指的是最后一个字段的内容;如果$13是最后一个字段,那么$NF=$13
FS(filed):输入字段分隔符,就是从读入一行记录时,这一行记录以什么作为每个字段的分隔符;默认空格
OFS:输出字段分隔符,就是在输出一个字段的时候,添加一个指定的符号,默认空格;
RS(record):输入记录分隔符
ORS:输出记录分隔符,即时在输出一条记录的时候,添加一个指定的符号,默认回车键;
2、awk如何使用外部变量
三、awk模式和动作
- ~正则匹配
- /....../ 正则表达式
- ~/^....../开始匹配一个以。。。开头的字符串
- ~/......$/开始匹配一个以。。。结尾的字符串
1、模式可以是:
2、awk选择和循环
- if: awk -F: 'BEGIN{} {if(){} else if(){} else if(){} else if(){} } END{} ' filename
- while: awk -F: 'BEGIN{} {i++;while(){}} END{}' filename
- for: awk -F: 'BEGIN{} {for(i=0;i<10;i++){print i}} END{}' filename
3、awk数组
四、awk内置函数
length($1):统计此变量的长度
gsub():全局替换
sub():替换
int():获取一个变量的整数
print和printf函数,awk格式化输出:
print里,不加引号,默认是变量;如果想打印普通字符串,需要加上双引号;