shell脚本三剑客:grep、sed、awk
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的更多相关文章
- Linux三剑客grep/sed/awk
grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...
- linux三剑客grep|sed|awk实践
最好先学习正则表达式的基本用法,以及正则表达式BREs,EREs,PREs的区别 此坑待填 grep sed awk
- shell脚本三剑客之sed
shell脚本之sed命令 1.概述 2.工作流程 3.命令格式 4.具体操作 1.概述: 1.sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流 2.sed编辑器 ...
- Linux三剑客grep、awk和sed
grep,sed 和 awk是Linux/Unix 系统中常用的三个文本处理的命令行工具,称为文本处理三剑客.本文将简要介绍这三个命令并给出基本用法. 管道 在介绍这两个命令之前,有必要介绍一下Uni ...
- shell脚本之使用sed和awk进行文本处理
Shell这种脚本语言特点是,结果松散,场景复杂,针对于一些参数都有特殊意义.针对于大部分工程师而言,使用中的情况是你可能会经常忘记参数或其意义,使你不得不查阅man或网上寻求帮助.此篇文档作用就是在 ...
- shell脚本三剑客之awk
shell脚本之awk命令 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具 适合小型文本数据 1.工作原理 2.AWK格式 3.按行输入文本 4.按字段输入文本 5.通过管道符号,双引号调 ...
- 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式
正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...
- Shell学习:grep, sed, awk命令的练习题
http://www.cnblogs.com/chengmo/archive/2013/01/17/2865479.html 文件:datafileSteve Blenheim:238-923-736 ...
- Linux三剑客grep、awk、sed
何为Linux三剑客? 第一个剑客是 grep,grep 会根据正则表达式查找相关内容并打印对应的数据. 第二个剑客是 awk,awk 的名字来源于三个作者的名字简称,它可以根据定位到的数据行处理其中 ...
随机推荐
- KTL 一个支持C++14编辑公式的K线技术工具平台 - 第六版,支持OpenGL,3D上帝视角俯视K线概貌。
K,K线,Candle蜡烛图. T,技术分析,工具平台 L,公式Language语言使用c++14,Lite小巧简易. 项目仓库:https://github.com/bbqz007/KTL 国内仓库 ...
- ucore lab5 用户进程管理 学习笔记
近几日睡眠质量不佳,脑袋一困就没法干活,今天总算时补完了.LAB5难度比LAB4要高,想要理解所有细节时比较困难.但毕竟咱不是要真去写一个OS,所以一些个实现细节就当成黑箱略过了. 这节加上了用户进程 ...
- 通过代码解释什么是API,什么是SDK?
这个问题说来惭愧,读书时找实习面的第一家公司,问的第一个问题就是这个. 当时我没能说清楚,回去之后就上百度查.结果查了很久还是看不懂,然后就把这个问题搁置了. 谁知道毕业正式工作后,又再一次地面对了这 ...
- 下载并配置pycharm
1.下载(推荐下载社区版) https://www.jetbrains.com/pycharm/download/#section=windows 2.配置代码编写前注释 得到这种效果: 3.设置字体 ...
- .Net Core 依赖注入(IOC) 一些简单的使用技巧
原文链接:https://www.cnblogs.com/ysmc/p/16240534.html .Net Core 在使用IOC后,我们不必再浪费精力在管理实例的生命周期上,交给IOC代替我们管理 ...
- Nginx中FastCGI参数的优化配置实例
在配置完成Nginx+FastCGI之后,为了保证Nginx下PHP环境的高速稳定运行,需要添加一些FastCGI优化指令.下面给出一个优化实例,将下面代码添加到Nginx主配置文件中的HTTP层级. ...
- 无线:WEP
WEP是Wired Equivalent Privacy的简称,有线等效保密(WEP)协议是对在两台设备间无线传输的数据进行加密的方式,用以防止非法用户窃听或侵入无线网络.不过密码分析学家已经找出 W ...
- OAuth2.0笔记
OAuth2.0笔记 角色 一般资源服务器和授权服务器是一个 资源拥有者 客户端应用 资源服务器 授权服务器 客户端类型 OAuth 2.0规范定义了两种客户端类型: 保密的:web应用 公有的:用户 ...
- [codeforces] 暑期训练之打卡题(三)
每个标题都做了题目原网址的超链接 Day21<Alphabetic Removals> 题意: 给定一个字符串,要求按照字典序按照出现的前后顺序删除 k 个字母 题解: 记录字符串中各个字 ...
- 基于surging网络组件多协议适配的平台化发展
前言 Surging 发展已经有快6年的时间,经过这些年的发展,功能框架也趋于成熟,但是针对于商业化需求还需要不断的打磨,前段时间客户找到我想升级成平台化,针对他的需求我 ...