awk命令
awk命令是一个功能强大的编辑工具,逐行读取输入文本
默认以空格或者tab键作为分隔符,多个空格会自动压缩成一个空格(连续的多个重复内容)
① 根据命令条件寻找指定行内容
② 打印再进行操作过滤出来的行内容
awk默认操作功能就是打印(免交互操作)
awk打印功能
命令:awk ‘[操作符] [选项]' [参数]
BEGIN { action } 模块,读取操作,读文件的所有行,所有读取完毕后一次性执行
END { action } 模块,打印,输出结果,对前面的结果条件判断,还可以用作代码操作
pattern 语句块中的通用命令是重要部分,如果没指定,默认执行{ print }
awk对行内容进行处理,再进行取列进行打印过滤(切片)
“ -F ” #指定分隔符,默认分隔符是若干个连续空白符
“ -v ” # var = value 变量赋值
“ { } ” 内指定操作,“ { } ” 外指定条件
用逗号指定连续的行,用 “ | | ” 指定不连续的行,&&表示逻辑且
例如( awk { print $1,$2,$3 } )
内置变量
“ $0 ” #当前处理行的整行内容(打印所有)
“ $[数字] ” #当前处理行的指定字段
“ NR ” #当前处理的指定行进行操作(NR>1 NR=1)
“ NF ” #当前处理行的字段个数,$NF相当于最后一个字段
“ OFS ” #输出内容的列分隔符
" FILENAME " #被处理的文件名
“ RS ” #行分隔符(指定分隔符自动换行)
用awk命令进行打印,默认打印方式
命令:awk ‘{ print }’
打印指定文件的第四列内容
命令:awk ‘ { print $4 } ’
打印指定文件的指定行数内容
命令:awk ‘ NR==[行数] { print } ’ [文件名]
打印指定文件的范围性多个行内容(范围性)
命令:awk ‘ NR==[行数],NR==[行数] { print } ’ [文件名]
打印指定文件的指定多个行内容
命令:awk ‘ NR==[行数];NR==[行数] { print } ’ [文件名]
打印偶数行
命令:awk ‘ NR%2=0 { print } ’ [文件名]
打印奇数行
命令:awk ‘ NR%2=1 { print } ’ [文件名]
运算功能
“ + ” 加法
“ - ” 减法
“ * ” 乘法
“ / ” 除法
“ ^ ” 次方
命令:awk ‘ BEGIN { print [运算公式] } ’
四、getline工作流程
getline函数
① getline是awk的一个内置函数
② 没有重定向和管道符时,就是打印奇偶数行
③ 重定向就是从指定文件获取内容,变量赋值
awk首先读取第一行,而getline跳转至光标下一行获取(无管道符和重定向的情况下)
打印偶数行
命令:awk ‘ { getline;print $0 } ’ [文件名]
打印偶数行
命令:awk ‘ { print $0;getline } ’ [文件名]
如果有重定向和管道符的情况下,则getline的作用是定向输入文件
将指定文件①输出给指定文件②
命令:awk ‘ { getline < "[文件①]";print $0 > "[文件②]";}’ [文件①]