shell脚本三剑客:grep  sed  awk

grep语法:

grep [OPTIONS] PATTERN [FILE]

常用选项

-c                       统计匹配到的行数
-i                        匹配时不区分大小写
-n                       显示匹配行所在行号
-o                       只显示匹配到的字符串
-v                       取反,反方向匹配,不匹配关键字的行
-E                      开启扩展的正则表达式
-A n                   显示匹配的所在的行及其后n行
-B n                   显示匹配的所在的行及其前n行
-C n                   显示匹配的所在的行及其前后各n行

例:查看ifconfig ens33,并选择关键字进行匹配,然后显示匹配到多少行,如果显示2行,说明有2行的内容包括这个关键字。

显示关键字所在的行号:-n

取反,反方向匹配,不匹配关键字的行:-v

显示匹配的所在的行及其后n行:-An

显示ifconfig ens33的结果并以192.168.100.30作为检索关键字提取所在行及后5行,后6行。

显示匹配的所在的行及其前n行:-Bn

显示ifconfig ens33的结果并以TX errors作为检索关键字提取所在行及前5行,以RX errors作为检索关键字提取所在行及前5行,若匹配行数多于实际行数则显示匹配行及前面所有行。

显示匹配的所在的行及其前后n行:-Cn

以RX packets为关键字,匹配关键字所在行及上下三行。

过滤空行:grep -v '^$'

正则表达式:

常用选项

.   :                 匹配任何单个字符(除NUL)

*  :                  匹配其前的任何数目或没有的单个字符,例: . 表示任一字符, 则 .* 匹配任一字符的任意长度

^  :                 匹配紧接着的正则表达式,BRE中仅在正则表达式的开头有特殊的含义,ERE中在任何位置都有特殊含义

$  :                 匹配前面的正则表达式,在字符串或者行结尾处。BRE中仅在正则表达式的结尾处有特殊的含义,ERE中在任何位置都有特殊含义

[]  :                 匹配方括号内的任一字符,其中可用连字符(-)指的连续字符的范围;^符号苦出现在方括号的第一个位置,则表示匹配不在列表中的任一字符,

字符出现次数:

*                  前面的字符出现任意次,包括0次

\?                前面的字符出现0次或1次,\为转义符

\+                前面的字符至少出现一次

\{m\}            前面的字符出现m次,\为转义符

\{m,\}           前面的字符至少出现m次,\为转义符

\{m,n\}        前面的字符至少出现m次,至多n次,\为转义符

sed语法:

sed [OPTIONS] PATTERN [FILE]

常用选项

-e             允许多项编辑

-i              直接修改

-f              指定sed脚本文件

-n             取消默认的输出

常见命令

p        打印(默认在屏幕上显示出来)建议和 -n 一起使用   

c        替换行

i         添加  在指定行的上一行添加内容

a        添加  在指定行的下一行添加内容      

d        删除

n N    读取/添加  模式匹配到的行的下一行内容,在对其进行操作

w       保存

s        文本内容替换

g        全部匹配

&        调用前面匹配的内容

例子:打印内容

1.打印指定行内容

打印某一行内容:sed -n 'np'

打印指定的多行内容,第x行到第y行:sed -n 'x,yp'

2.打印关键字所在行内容:sed -n '/关键字/ p' 文件

打印以root开头的行

3.打印奇数行及偶数行

1~2p:以第一行为开始行,步数为2进行打印。

2~2p:以第二行为开始行,步数为2进行打印。

例子:删除内容

1.删除指定行:sed -n 'nd' 文件

2.通过关键字删除所在行

删除包含inet的所在行

3.删除第几行到第几行

4.删除空行

sed '/^$/d' 文件

5.取反删除

sed '/^$/ !d' 文件

例子:修改内容

sed -i '命令 ' 文件

1.插入内容

在文本第二行后插入hello

插入空行

sed -i '1a \ \' 文件

2替换内容

sed -i '原内容所在行c 新内容' 文件

指定字符进行替换

将文本中的s替换成x

awk语法

sed [OPTIONS]  ‘模式{操作}’ 文件

内置变量

FS :输入字段分隔符,默认为空白字符

OFS:输出字段分隔符,默认为空白字符

RS :输入记录分隔符,指定输入时的换行符,原换行符仍有效

ORS :输出记录分隔符,输出时用指定符号代替换行符

NF :字段数量,共有多少字段, $NF引用最后一列,$(NF-1)引用倒数第2列

NR :行号,后可跟多个文件,第二个文件行号继续从第一个文件最后行号开始

FNR :各文件分别计数, 行号,后跟一个文件和NR一样,跟多个文件,第二个文件行号从1开始

FILENAME :当前文件名

ARGC :命令行参数的个数

ARGV :数组,保存的是命令行所给定的各参数,查看参数

例子:打印内容

awk '{print $n}'

默认以空格为分隔符,打印第n个字段,效果与awk -F" " '{print $n}'相似。

打印倒数第二个字段

awk '{print $(NF-1)}'

打印多列内容

awk -F '{print $n,$m}'

打印多列内容并指定分隔符

awk -F '{print $n “?” $m}'(以?为分隔符)

打印关键字所在行

awk '/关键字/ {print}'

利用关键字提取IP

打印行号

awk '{print $n,NR}'

\t为制表符

提取符合条件的字段

取已用字段中占用比大于15%的字段

df -h |awk -F" " '{print $5}' |awk -F"%" '$1>15 {print}'

打印某行

awk 'NR==n {print}'

提取IP

以某行某列确定IP的位置

取偶数行

awk -F 'NR%2==0 {print}'

取奇数行

awk -F 'NR%2==1 {print}'

shell脚本三剑客:grep、sed、awk的更多相关文章

  1. Linux三剑客grep/sed/awk

    grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...

  2. linux三剑客grep|sed|awk实践

    最好先学习正则表达式的基本用法,以及正则表达式BREs,EREs,PREs的区别 此坑待填 grep sed awk

  3. shell脚本三剑客之sed

    shell脚本之sed命令 1.概述 2.工作流程 3.命令格式 4.具体操作 1.概述: 1.sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流 2.sed编辑器 ...

  4. Linux三剑客grep、awk和sed

    grep,sed 和 awk是Linux/Unix 系统中常用的三个文本处理的命令行工具,称为文本处理三剑客.本文将简要介绍这三个命令并给出基本用法. 管道 在介绍这两个命令之前,有必要介绍一下Uni ...

  5. shell脚本之使用sed和awk进行文本处理

    Shell这种脚本语言特点是,结果松散,场景复杂,针对于一些参数都有特殊意义.针对于大部分工程师而言,使用中的情况是你可能会经常忘记参数或其意义,使你不得不查阅man或网上寻求帮助.此篇文档作用就是在 ...

  6. shell脚本三剑客之awk

    shell脚本之awk命令 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具 适合小型文本数据 1.工作原理 2.AWK格式 3.按行输入文本 4.按字段输入文本 5.通过管道符号,双引号调 ...

  7. 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式

    正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...

  8. Shell学习:grep, sed, awk命令的练习题

    http://www.cnblogs.com/chengmo/archive/2013/01/17/2865479.html 文件:datafileSteve Blenheim:238-923-736 ...

  9. Linux三剑客grep、awk、sed

    何为Linux三剑客? 第一个剑客是 grep,grep 会根据正则表达式查找相关内容并打印对应的数据. 第二个剑客是 awk,awk 的名字来源于三个作者的名字简称,它可以根据定位到的数据行处理其中 ...

随机推荐

  1. 【翻译】ScyllaDB数据建模的最佳实践

    文章翻译自Scylla官方文档:https://www.scylladb.com/2019/08/20/best-practices-for-data-modeling/ 转载请注明出处:https: ...

  2. 新作!分布式系统韧性架构压舱石OpenChaos

    摘要:本文首先以现今分布式系统的复杂性和稳定性的需求引出混沌工程概念,并阐述了OpenChaos在传统混沌工程上的优化与创新. 背景 随着Serverless,微服务(含服务网格)与越来越多的容器化架 ...

  3. PowerJob高级特效-容器部署完整教程

    介绍 powerjob提供了容器功能,用来做一些灵活的任务处理.这里容器为 JVM 级容器,而不是操作系统级容器(Docker).(至于为什么取"容器"这个有歧义的名字是因为作者没 ...

  4. while..else ;for;range; 基本数据类型的内置函数

    while + esle #当while循环正常循环结束后,会执行else中的代码块.如果遇到break结束循环,else中的代码将不会运行. ``` 结构: while 条件: 循环代码 else: ...

  5. Fastflow——基于golang的轻量级工作流框架

    Fastflow 是什么?用一句话来定义它:一个 基于golang协程.支持水平扩容的分布式高性能工作流框架. 它具有以下特点: 易用性:工作流模型基于 DAG 来定义,同时还提供开箱即用的 API, ...

  6. 安装Zookeeper到Linux

    系统版本:Ubuntu 16.04.5 LTS 软件版本:apache-zookeeper-3.5.8 硬件要求:无 1.安装依赖 Zookeeper需要JDK的支持. 注:需要先去JDK官网下载安装 ...

  7. GoF的23种设计模式的功能

    GoF的23种设计模式的功能 前面说明了 GoF 的 23 种设计模式的分类,现在对各个模式的功能进行介绍. 单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取 ...

  8. 微信小程序使用echarts遇到的问题

    问题1:ec-canvas出现上下滑动页面会漂移 解决方法:在标签内加 force-use-old-canvas="true" 问题2:echarts的tooltip会超出边界 解 ...

  9. vue大型电商项目尚品汇(前台篇)day04

    这几天一直都在做项目,只是没有上传上来,即将把前台项目完结了.现在开始更新整个前台的部分 一.面包屑处理 1.分类操作 点击三级联动进入搜索产生面包屑,直接取参数中的name即可 点击x怎么干掉这个面 ...

  10. 即时通讯IM,是时代进步的逆流?看看JNPF怎么说

    JNPF快速开发平台所包含的第四个重要的开发框架是即时通讯沟通工具.即时沟通工具的目的是让各大企事业单位在各种业务工作流程环境下实现实时无缝协同办公,打破信息数据孤岛,形成高效的层级流转审批和各流程环 ...