四.awksde深度讲解
Posted 寂静深林丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四.awksde深度讲解相关的知识,希望对你有一定的参考价值。
###sed###
查询
1创建测试文件
cat>person.txt<<EOF
> 101,oldboy,CEO
> 102,zhangyao,CTO
> 103,Alex,COO
> 104,yy,CFO
> 105,feixue.CIO
> EOF
2查询单行文本
2连续查询多行文本
3显示出文件包含oldboy的行到包含104的行
等于grep \'oldboy\' person.txt
^104以104开头更加精确
4过滤多个字符串
7查询指定多行 使用;分号
增加
1增加单行文本
#sed \'3a 103.5,Lee,UFO\' person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
103.5,Lee,UFO
104,yy,CFO
105,feixue.CIO
# sed \'3i 103.5,Lee,UFO\' person.txt
101,oldboy,CEO
102,zhangyao,CTO
103.5,Lee,UFO
103,Alex,COO
104,yy,CFO
105,feixue.CIO
2增加多行文本
# sed \'$a new,new,new,\' person.txt
$a 最后一行
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue.CIO
new,new,new,
# sed \'2a 106,xiaoyu,CXO\\n107\\n108\\n109\' person.txt
101,oldboy,CEO
102,zhangyao,CTO
106,xiaoyu,CXO
107
108
109
103,Alex,COO
104,yy,CFO
105,feixue.CIO
一般追加到行位用的cat>person.txt<<EOF
追加到某一行就用sed i a
删除
sed \'/^$/d\' person.txt
删除空行
sed -n \'/^$/!p\' person.txt
/^$/p显示空行加!排除取反
sed \'$d\' person.txt
删除最后一行
sed \'$!d\' person.txt
删除不是最后一行
替换
文本替换
测试
变量替换
这里要用双引号 单引号不执行
# x=oldboy
# y=oldgirl
# sed "s#$x#$y#g" person.txt
101,oldgirl,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue.CIO
反向引用
扩展
回顾
###awk####
执行过程 按照下面的命令来理解
主要讲不同的模式或者说是条件
创建环境
# mkdir -p /server/files
#cat>>/server/files/reg.txt<<EOF
Zhang Dandan 41117397 :250:100:175
Zhang Xiaoyu 390320151 :155:90:201
Meng Feixue 80042789 :250:60:50
Wu Waiwai 70271111 :205:80:75
Liu Bingbing 41117483 :250:100:175
Wang Xiaoai 3515064655 :50:95:135
Zi Gege 1986787350 :250:168:200
Li Youjiu 918391635 :175:75:300
Lao Nanhai 918391635 :205:100:175
EOF
# awk \'/Xiaoyu/\' reg.txt 过滤出来
Zhang Xiaoyu 390320151 :155:90:201
# awk \'/Xiaoyu/{print $1,$2,$3}\' reg.txt 花括号前面就是条件或者说模式
Zhang Xiaoyu 390320151
精确一点就是
# awk \'$2~/Xiaoyu/{print $1,$2,$3}\' reg.txt
$2~/Xiaoyu/第二列包含xiaoyu
$0~ ===/Xiaoyu/
# awk \'$3~/^41/\' reg.txt
# awk \'$3~/^41/{print $1,$2,$3}\' reg.txt
# awk \'$3~/[15]$/\' reg.txt
# awk \'$3~/[15]$/{print $1,$2}\' reg.txt
$0 就是所有列
# awk \'{gsub(/:/,"$",$4);print}\' reg.txt
特殊模式BEGIN和GND
i每加1就显示出来
。。
END 显示最后的结果
awk数组统计
############
最终计算
或者用awk中for循环for (pol in h)==pol随便写就是个变量
in就是去哪里 awk循环里h这个位置是数组的名字
会自动打开h成为数组名字
以后可以把它当做一个公式用$2用那一列自己选比如说第一列是ip地址
作业
awk \'/Failed/\' secure-20161219 |awk \'$11~/[0-9].[0-9].[0-9].[0-9]/{i[$9" "$11]=i[$9" "$11]+1}END{for(ip in i) print ip"\\t"i[ip]}\'
以上是关于四.awksde深度讲解的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV | OpenCV实战从入门到精通系列四 --常用函数讲解
OpenCV | OpenCV实战从入门到精通系列四 --常用函数讲解