grep----基于正则表达式查找满足条件的行

1、内容检索

  获取行 grep pattern file

  获取内容 grep -o pattern file

  获取上下文grep -A -B -C pattern file

  grep a file   查找包含a的行

  grep  -o "1$" file 获取包含1的行,且打印1

  grep -o " [0-9]*1$ file 获取空格开头+多个数字+1结尾的字符内容

  grep -B1 "2" file 取值除了包含当前行,还会取值当前行前一行的数据;

  grep -E 选项可以用来扩展选项为正则表达式

2、文件检索

  递归搜索 grep pattern -r dir/

  展示匹配文件名 grep -H 111 dir/1

  只展示匹配文件名 grep -1 111 /tmp/1

  grep 111 -r 目录   查询目录下文件名为111的文件

3、范围约束

  忽略带小写 grep -i pattern file

  不显示匹配的行 grep -v pattern file

  使用扩展正则表达式 grep -E pattern file

  文件范围和目录范围约束 grep 111 -r /tmp/demo/ --include "11*"

4、进程检索

  进程过滤场景比较特殊,需要注意

  grep 本身会开启新进程,所以需要单独过滤掉grep进程

  ps -ef | grep ssh

  ps -ef | grep ssh |grep -v grep

awk----根据定位到的数据行处理其中的分段

1、基本语法

  是linux下的一个命令,语言解析引擎;解析命令,直接进行执行;

  具备完整的编程特性,比如执行命令,网络请求;

  精通awk,是一个linux工作者的必备技能

  语法awk 'pattern{action}'   匹配表达式、行为表达式  action 不写 默认为print

2、上下文变量

  开始BEGIN 结束END -----初始化、汇总

  行数NR -----

  字段与字段数$1$2...$NFNF

  整行$0

  字段分隔符FS

  输出数据的字段分隔符OFS

  记录分隔符RS

  输出字段的行分隔符ORS

3、字段变量用法

  -F 参数指定字段分隔符,可以用|指定多个-多分隔符-F '<|>'

  BEGIN{FS="_"}也可以表示分隔符

  $0代表当前的记录

  $1代表第一个字段

  $N代表第N个字段

  $NF代表最后一个字段

  $(NF-1) 代表倒数第二个字段

4、pattern表达式

  正则匹配

    $1~/pattern/      ----字段匹配一个表达式

    /pattern/    ----整行匹配

  比较表达式

    $2>2 $1 == "b"

  

  awk '$1~/2/'   打印第一列中有2的行

5、正则匹配表达式案例

  开始和结束 awk 'BEGIN{}END{}'

  正则匹配

    整行匹配 awk '/Running/'

    字段匹配 awk '$2~/xxx/'

  行数表达式

    取第一行 awk 'NR==2'

    去掉第一行 awk 'NR>1'

  区间选择

    awk '/aa/,/bb/'

    awk '/1/,NR==2'

6、action行为表达式{action}

  打印 {print $0}{print $2}

  赋值 {$1='abc'}

  处理函数

  原始内容$0

  更新后内容{$1=$1;print $0}

7、单行转多行

  

  print 默认是换行符输出的

8、多行转为单行

  

  

9、计算平均数

  设置变量total并初始化为0,以逗号为分隔符【字段分隔】,求第二列的总和,并输出总和除以行数

  

10、字典结构array【数组】

  array 是稀疏矩阵,类似python的词典类型

  统计多家机构的营业额

  统计多级机头的营业额平均值

  定义一个字典data,以第一列为为key,第三列为value进行累加,然后循环字典,打印key和value

  

  定义两个字典 data 统计以第一列的key,第三列的总和 count 第一列的key 统计key出现的次数;在求对应的平均数

  

sed 定位并修改数据;注意:修改的不是源文件,只是修改了打印结果

1、基本语法

  语法结构sed[addr]X[options]  ----定位+表达式

  -e 表达式

  sed -n '2p' 打印第二行

  sed 's#hello#word#' 修改

  -i 直接修改源文件

  -E 扩展表达式

  -debug调试

2、正则表达式

  行数与行数范围  20 30,35

  正则匹配  /pattern/

  区间匹配 //,//

  打印第二行数据

  

  打印第1行到第4行数据

  

  匹配有a的行

  

3、action表达式

  p打印,通常结合-n参数 sed -n '2p' ----使用频率较高

  s查找替换:s/regexp/replacement/[flags] -----使用频率较高

  d删除

  a追加

  c改变

  i插入内容到匹配行之前

  e执行命令

  分组匹配与字段提取:sed 's#([0-9])|([a-z])#\1 \2 #'

4、行数操作

  打印特定行 sed -n 2p

  删除最后一行 sed '$d'

  删除1到3行

  

5、S表达式

  S表示替换

  S后面的追加字符可以为任意字符

  g表示全局匹配

  

  & 表示匹配内容

   :号前面加123

  /符号可以被任意代替

  把d替换为replaced

  

  以3为结尾的,替换成100

  

6、反向引用

  使用()对数据分组

  使用\1\2反向引用分组

  

  在abd前面增加123     

  

  在abd后面增加123

  

  将abd后面替换为123

  

  

  

  

  

    

  

  

  

  

  

  

  

  

  

  

  

 

  

【linux系统】命令学习(五)linux三剑客 grep \ awk \ sed的更多相关文章

  1. linux基础命令学习五(软件包管理、下载管理)

    Linux 软件包管理   本文主要是记录下RedHat系列的软件包管理. 内容分为以下二个部分:二进制包的管理,源代码包的管理 一.二进制包的管理 1.1概念 主要有RPM和YUM这两种包管理. 两 ...

  2. Linux三剑客-grep || awk || sed

    grep是一个强大的文本搜索工具 命令格式: grep [option] pattren file -a  将二进制文档以文本方式处理 -c  计算找到的符合行的次数 -i  忽略大小写 -n  顺便 ...

  3. Linux 系统编程 学习:01-进程的有关概念 与 创建、回收

    Linux 系统编程 学习:01-进程的有关概念 与 创建.回收 背景 上一讲介绍了有关系统编程的概念.这一讲,我们针对 进程 开展学习. 概念 进程的身份证(PID) 每一个进程都有一个唯一的身份证 ...

  4. linux基础命令学习笔记(二)

    linux基础命令学习笔记(二) 1.kill :终止进程  kill pid (唯一标示一个进程) kill -9  强制终止  kill -15 命令未结束不能终止 # ps aux 查看所有进程 ...

  5. 一点点linux系统的学习心得

    我相信你正在阅读本文的时候,可能是因为你渴望学习Linux技术.我想分享一下过去两年中我自己的一些学习经历,希望你能更顺利地成为Linuxer. 两年前在Linux系统的运行和维护方面找到了一份工作( ...

  6. 安装虚拟机和Linux系统的学习

    安装虚拟机和Linux系统的学习(随笔3) 1.安装虚拟机 首先我按着老师给的链接上的步骤一步一步安装VirtualBox,进行得十分顺利. 接着则是在虚拟机上安装Ubuntu. 然而安装完成以后按要 ...

  7. Linux 系统编程 学习:02-进程间通信1:Unix IPC(1)管道

    Linux 系统编程 学习:02-进程间通信1:Unix IPC(1)管道 背景 上一讲我们介绍了创建子进程的方式.我们都知道,创建子进程是为了与父进程协作(或者是为了执行新的程序,参考 Linux ...

  8. Linux 系统编程 学习:03-进程间通信1:Unix IPC(2)信号

    Linux 系统编程 学习:03-进程间通信1:Unix IPC(2)信号 背景 上一讲我们介绍了Unix IPC中的2种管道. 回顾一下上一讲的介绍,IPC的方式通常有: Unix IPC包括:管道 ...

  9. Linux 系统编程 学习:04-进程间通信2:System V IPC(1)

    Linux 系统编程 学习:04-进程间通信2:System V IPC(1) 背景 上一讲 进程间通信:Unix IPC-信号中,我们介绍了Unix IPC中有关信号的概念,以及如何使用. IPC的 ...

随机推荐

  1. 移动端多个DIV简单拖拽功能

    移动端多个DIV简单拖拽功能. 这个demo与之前写的一个例子差不了多少,只是这个多了一层遍历而已. <!DOCTYPE html> <html lang="en" ...

  2. JVM学习笔记——GC算法

    GC 算法 GC 即 Garbage Collection 垃圾回收.JVM 中的 GC 99%发生在堆中,而 Java 堆中采用的垃圾回收机制为分代收集算法.即将堆分为新生代和老年代,根据不同的区域 ...

  3. 如何评估 Serverless 服务能力?这份报告给出了 40 条标准

    编者按:两年前,我们还在讨论什么是 Serverless,Serverless 如何落地.如今,已经有评测机构给出了 40 条标准来对 Serverless 的服务能力进行评估,这些评估细则既是技术生 ...

  4. 飞猪基于 Serverless 的云+端实践与思考

    作者 | 王恒飞(承荫) 本文整理自飞猪旅行前端技术专家--王恒飞(承荫)在[阿里云 Serverless Developer Meetup 上海站]上的分享.点击查看直播回放:https://dev ...

  5. 从零入门 Serverless | 函数计算如何粘合云服务,提供端到端解决方案

    作者 | 西流 阿里云技术专家 导读:阿里云 Serverless 产品函数计算可以作为粘合剂,串联其他云服务提供端到端解决方案,从而简化编程模型,快速实现最上层的业务目标. 传统单体应用的拆解 首先 ...

  6. SONiC架构分析

    目录 系统架构 设计原则 核心组件 SWSS 容器 syncd 容器 网络应用容器 内部通信模型 SubscriberStateTable NotificationProducer/Consumer ...

  7. 无网环境安装docker之--rpm

    总体思路:找一台可以联网的linux,下载docker的RPM依赖包而不进行安装(yum localinstall),将所有依赖的rpm环境打包好,再在无网环境中解压逐一安装(rpm:  --forc ...

  8. 全场景效能平台猪齿鱼常用的前端css实现方案

    ​ 居中 最常用的height + line-height,以及margin:0 auto的居中方式就不再阐述,以下介绍两种容错性高的实现方案. flex布局实现 ​ 猪齿鱼前端日常开发中,我们多以f ...

  9. Java:Set接口小记

    Java:Set接口小记 对 Java 中的 Set接口 与 其实现类,做一个微不足道的小小小小记 概述 public interface Set<E> extends Collectio ...

  10. Beta阶段第九次会议

    Beta阶段第九次会议 时间:2020.5.25 完成工作 姓名 完成工作 任务难度 完成度 ltx 1.发现小程序身份认证bug和新闻列表获取bug2.修改新增页面风格 轻 90% xyq 1.修改 ...