###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]}'

四.awk、sde深度讲解的更多相关文章

  1. webpack与browser-sync热更新原理深度讲解

    本文首发于CSDN网站,下面的版本又经过进一步的修订.原文:webpack与browser-sync热更新原理深度讲解本文包含如下内容: webpack-hot-middleware EventSou ...

  2. Google资深工程师深度讲解Go语言完整教程

    资源获取链接点击这里 欢迎大家来到深度讲解Go语言的课堂.本课程将从基本语法讲起,逐渐深入,帮助同学深度理解Go语言面向接口,函数式编程,错误处理,测试,并行计算等元素,并带领大家实现一个分布式爬虫的 ...

  3. 第四节:详细讲解Java中的类和面向对象思想

    前言 大家好,给大家带来详细讲解Java中的类和面向对象思想的概述,希望你们喜欢 类和面向对象 在Java中怎样理解对象,创建对象和引用:什么是引用,对于基础学习的同学,要深入了解引用.示例:Stri ...

  4. 四个例子实战讲解.htaccess文件rewrite规则(转)

    一.防盗链功能 1 2 3 4 RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC] Rewrite ...

  5. js闭包深度讲解

    js的闭包是学习js过程中的重点,但是不得不说也是一个难点呀,其涉及到了js中的很多概念.我在学习js中也遇到了很多问题,这篇文章算是一个对闭包的总结,文章主要内容为闭包的基本知识点与对其理解上的一些 ...

  6. 新鲜出炉!JAVA线程池精华篇深度讲解,看完你还怕面试被问到吗?

    前言 前两天趁着假期在整理粉丝私信的时候看到一个粉丝朋友的私信跟我说自己现在正在复习准备面试,自己在复习到线程池这一块的时候有点卡壳,总感觉自己差了点什么.想要我帮他指导一下.这不趁着假期我也有时间我 ...

  7. 深度讲解VIEWPORT和PX是什么?移动端单位px,em,rem

    刚开始接触移动页面重构,是不是很迷惑应该按照多大的尺寸制作?320.640还是720?按照640的设计稿重构完页面,是不是还需要写其他尺寸来适配不同的屏幕大小?—— 这源于对viewport和px的不 ...

  8. Android IOS WebRTC 音视频开发总结(四七)-- 深度解读国内首届WebRTC大会背后的真相

    本文主要解读国内首届WebRTC大会背后的真相,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,更多详见www.rtc.help -------------------------- ...

  9. Nginx详解二十四:Nginx深度学习篇之灰度发布

    实战场景 - 灰度发布 灰度发布的作用:按照一定的关系区别,分部分的代码进行上线,使代码的发布能平滑过渡上线实现方式: 1.用户的信息cookie等信息区别 2.根据用户的IP地址 安装memcach ...

随机推荐

  1. NIO的epoll空轮询bug

    JDK NIO的bug,例如epoll bug,它会导致Selector空轮询,最终导致CPU 100%. Selector BUG出现的原因 若Selector的轮询结果为空,也没有wakeup或新 ...

  2. 「SHOI2015」(LOJ2038)超能粒子炮・改

    传送门:Here 一句话题意:给定$ t$次询问,每次读入$n,k,$求$ \sum_{i=0}^kC_n^k\ mod\ 2333$, 其中$ t \leq 100000$,$n,k \leq 10 ...

  3. jQuery插件整理

    toastr:Jquery消息提示插件 http://codeseven.github.io/toastr cropperjs:jQuery简单且功能强大的图片剪裁插件 https://www.npm ...

  4. 51nod1693 水群 最短路

    若A=K*B,若仅通过操作二:将B变换为A需要K步, 由算数基本定理可知:k=p1*p2*……pn(p为素数,且可能重复) 那么:将B转化为p1*B需要p1步,将p1*B转化为p1*p2*B需要p2步 ...

  5. tomcat quartz 被触发两次

    主要原因为tomcat server.xml 配置问题 <Host appBase="webapps" autoDeploy="true" name=&q ...

  6. spring3.2.2 remoting HTTP invoker 实现方式

    最近跟朋友聊天,聊到他们现在项目的架构都是把数据层跟应用层分离开来,中间可以加memcached等的缓存系统,感觉挺好的,很大程度上的降低耦合,然后还明确分配了数据层跟应用层任务.也方便定位.找到问题 ...

  7. python set 使用

    创建集合set python set类是在python的sets模块中,大家现在使用的python2.7.x中,不需要导入sets模块可以直接创建集合.>>>set('boy')se ...

  8. C++ Template 编程,泛型编程练习

    #include <iostream> #include <string> #include <deque> #include <stdexcept> ...

  9. 【ARTS】01_15_左耳听风-20190218~20190224

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  10. 【转】MySQL— 进阶

    [转]MySQL— 进阶 目录 一.视图 二.触发器 三.函数 四.存储过程 五.事务 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需 ...