awk
awk是一个强大的linux命令,用来做数据统计文本分析简单又方便,经常一句话就够。下面我们就在见识一下吧。
1.打印文件的第一列和第四列
awk '{print $1,$4}' demo.txt
awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
#awk -F #-F相当于内置变量FS, 指定分割字符
#指定多个分割字符
awk -F '[ ,]' '{print $1,$2,$5}' log.txt
# 设置变量 awk -v
awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt
# 运行awk脚本文件
awk -f {awk脚本} {文件名}
# 过滤第一列=2的行
awk '$1==2 {print $1, $2}' log.txt
过滤第一列大于2并且第二列等于'Are'的行
awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt
# 输出顺序号 NR, 匹配文本行号
awk '{print NR,FNR,$0}' log.txt
# 指定输出分割符
$awk '{print $1,$2,$5}' OFS=" $ " log.txt
# 使用正则,字符串匹配
# 输出第二列包含 "th",并打印第二列与第四列
$ awk '$2 ~ /th/ {print $2,$4}' log.txt
# ~ 表示模式开始。// 中是模式。
# 模式取反,不包含‘th’
awk '$2 !~ /th/ {print $2,$4}' log.txt
关于awk脚本,我们需要注意两个关键词BEGIN和END。
BEGIN{ 这里面放的是执行前的语句 }
END {这里面放的是处理完所有的行后要执行的语句 }
{这里面放的是处理每一行时要执行的语句}