目录
一、awk 命令
(1)awk 是一个强大的文本分析工具,相对于grep,sed的编辑,awk 在其对数据分析并生成报告时,显得尤为强大,简单来说awk 就是把文件逐行读入,以空格为默认分隔符将每行切片,切开部分在进行各种分析处理
使用方法:awk '{pattern + action}'{filename}
其中,pattern 表示awk在数据中查找的内容,而action 是在找到匹配内容,而action 是在找到匹配内容时所执行的一系列命令;花括号{}不需要在程序中始终出现。
(2)awk 的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作
(3)通常,awk 是以文件的一行为处理单位的,awk每接收文件的一行,然后执行相应的命令来处理文本。
二、awk 内置变量
(1)ARGC 命令行参数个数
(2)ARGV 命令行参数排列
(3)ENVIRON 支持队列中系统环境变量的使用
(4)FILENAME awk浏览的文件名
(5)FNR 浏览文件名的记录数
(6)FS 设置输入域分隔符,等价于命令行 -F 选项
(7)NF 浏览记录的域的个数
(8)NR 已读的记录数
(9)OFS 输出域分隔符
(10)ORS 输出记录分隔符
(11)RS 控制记录分隔符
(12)$0 变量是指整条记录,$1 表示当前行的第一个域,$2 表示当前行的第二个域
(13)$NF 是number finally,表示最后一列的信息区别于NF,变量NF统计的是每行列的总数
三、awk使用
(1)ls | awk '/sh/' 列出目录内含有sh的文件或目录
(2)ls | awk '/sh$/' 列出目录内后面含有sh的文件或目录
(3)ls | awk '/^sh/' 列出目录内含有sh开头的文件或目录
(4)awk '{print FILENAME,NR,NF}' abc.txt 输出abc.txt的文件名,域内的行数、列数
(5)awk 'NR==2'abc.txt 输出第二行内容
(6)awk 'NR==4{$4="avr";printf $0}' abc.txt 输出第四行,其中第四行的第四个字符替换成avr
(7)awk 'NR==1{$8="avr";print $0} NR>1{$8=($4+$5+$6)/3;print $0}' abc.txt 将第一行的第八个字符改成avr后输出第一行,将第一行后面的每一行的第四至第六个字符求平均,输出每一行
(8)awk '{print $NF}' abc.txt 输出abc.txt的最后一列
(9)awk '{print $(NF-1)}' abc.txt 输出abc.txt的最后减一列
(10)awk 'NR>1&&NR<5{print $0}' abc.txt 输出第二行至第四行
(11)cat abc.txt |awk 'BEGIN{print "This is the love"}{print $0}' 打开abc.txt并在开头打入字符串"this is the love" 并输出,但并不保存进文档里面
(12)cat abc.txt |awk 'BEGIN{print "This is the love"}{print $0}END{print "END"}' 结尾加上“END”
(13)cat abc.txt |awk 'BEGIN{print "This is the love"}{print $0}END\
{print "END"}'
在行分割出打入\在按enter,进行换行