awk 学习总结
这是我在http://www.zsythink.net/archives/1336 的博客的一些摘抄 写等挺细致的 谢谢他
awk 的格式 awk [options] 'Pattern{Action}' file
pattern有 begin end 特殊模式 模式即为条件
action 有print printf "指定的格式" "文本1" "文本2" "文本3" .
option 有F# 或这 -v FS=’#‘ -v OFS=':'
- $NF 和 NF 要表达的意思是不一样的,对于awk来说,$NF表示最后一个字段,NF表示当前行被分隔符切开以后,一共有几个字段。
- $1这种内置变量的外侧不能加入双引号,否则$1会被当做文本输出
- awk '{print $1 $2}' 连接在一起输出。awk '{print $1,$2}' 以输出分隔符隔开后显示
- FS:输入字段分隔符, 默认为空白字符
OFS:输出字段分隔符, 默认为空白字符
RS:输入记录分隔符(输入换行符), 指定输入时的换行符
ORS:输出记录分隔符(输出换行符),输出时用指定符号代替换行符
NF:number of Field,当前行的字段的个数(即当前行被分割成了几列),字段数量
NR:行号,当前处理的文本行的行号。
FNR:各文件分别计数的行号
FILENAME:当前文件名
ARGC:命令行参数的个数
ARGV:数组,保存的是命令行所给定的各参数 - awk就是这么规定的,'pattern{ action }'并不被看做是参数,awk被看做为参数。ARGV[0] 是awk ARGV[1] 是后面的文件
- 方法一:-v varname=value(shell传参) 变量名区分字符大小写。方法二:在program中直接定义(一半在begin里面定义)。
- awk 'NF==5{print $0}' test2 、空模式(匹配所有行)2、关系运算模式3、BEGIN/END模式 4 正则模式 5 行模式
- 当awk中使用了END模式时,如果执行了exit语句,那么exit语句之后的所有动作都将不会再被执行,END模式中的动作除外。
- 除了能够使用"exit命令"结束"整个awk",还能够使用"next命令"结束"当前行"
- 最常用的算数函数有rand函数、srand函数、int函数
11.sub函数的作用理解为指定范围内的单次替换,只替换第一次匹配到的字符。 或者省略gsub函数中的第三个参数,省略gsub中的第三个参数时,默认为"$0",
可以使用语法 "if(下标 in 数组名)" ,从而判断数组中是否存在对应的元素。
本作品采用《CC 协议》,转载必须注明作者和本文链接