awk
概述:一般擅长对列进行操作
参数
NR 对列进行操作
$1,$2 提取第几列信息
$NF 提取最后一列
$(NF-n) 提取倒数第几列
$0 提取所有列信息
-F 指定分割字符 (后面的指定字符需要" *"引号引起来 )
作用特点:
1、排除信息
2、查询信息
3、统计信息
4、替换信息
基本语法格式:
awk 参数 要干什么 文件
一、查询信息
1、按照行查询
awk 'NR==2' awk_test.txt
查询第二行信息
ps:注意分别=与==
查询连续信息
awk 'NR==2,NR==5' awk_test.txt
查询第二行到底五行的信息
查询不连续信息
awk 'NR==2;NR==5' awk_test.txt
查询第二行和底五行的信息
2、按照字符查询(需要一个舞台)
awk '/xiaoyu/' awk_test.txt
查询xiaoyu的有关信息
awk '/xiaoyu/,/waiwai/' awk_test.txt
查询xiaoyu到waiwai的相关xinx
awk '/xioayu/;/waiwai/' awk_test.txt
查询xiayu和waiwai的相关信息
awk '/xiaoyu/{print $1","$3}' awk_test.txt
Zhang,390320151
awk '/Xiaoyu/{print $1,$3}' awk_test.txt
Zhang 390320151
查询xiaoyu这一行输出第一列与第三列
注意","与,的区别
awk '/zhang/{print $NF}' awk_test.txt | awk -F ":" '{print $3}'
(提取zhang的最后一列,以:为分隔符号提取第三列)
awk -F "[ :]+" '/^zhang/{print $1, $3, $(NF-1)}' awk_test.txt
(提取以zhang开头的行,以:为分隔,提取第一列,第三列,和最后一列-1列)
awk '$3~ /^41/{print $1, $2, $3}' awk_test.txt
匹配第三列,以41开头的行 输出第一列,第二列,第三列.
awk '$3~/1$|5$/{print $1,$2}'awk_test.txt|columt -t
columnt -t(格式化显示) 匹配第三列 以1和5结尾的
awk '$2~ /xiaoyu/{gsub(/;/,"$",$NR);print $NF}' awk_test.txt
匹配第二列xiaoyu一行 将最后一列的:改为$,并输出最后一列
gsub格式:
gsub(/需要替换的信息/,"修改成什么信息",将哪列信息进行修改)
awk '$0~ /^#|^$/' awk_test.txt
找寻所有列以#和$开头的内容
BEGIN{}在awk命令前做什么事
awk 'BEGIN{print "姓","名","QQ号","捐款记录"}{print $0}' awk_test.txt |column -t
END{} 在awk执行命令结束之后做的操作
awk 'BEGIN{print "姓","名","QQ号","捐款记录"}{print $0}END{print "操作结束"}' awk_test.txt |column -t
二、统计累加
awk '/^$/{i=i+1;print i}' /etc/services
awk '/^#/{i++}END{print i}' /etc/services