一、egrep

1.1 定义

以行为单位,逐行进行处理。默认只输出与表达式相匹配的文本行

1.2 基本格式

egrep [选项] '正则表达式' 文件...
前置命令 | egrep [选项] '正则表达式'

1.3 常用命令选项

1.3.1 egrep -i

忽略大小写

1.3.2 egrep -v

条件取反

1.3.3 egrep -c

统计匹配的行数
egrep -c "." /etc/passwd#统计passwd有多少行

1.3.4 egrep -q

静默,不输出任何信息。可通过$?看结果是否正确

1.3.5 egrep -n

显示出匹配结果所在的行号

1.3.6 egrep -o

只输出匹配的内容,不是一行

1.3.7 egrep -A n key

输出匹配key关键字及关键字下面的n行

1.3.8 egrep -B n key

输出匹配key关键字及关键字上面的n行

1.3.9 egrep -C n key

输出匹配key关键字及关键字上下的n行

1.4 正则表达式

正则表达式使用一串特殊符号来描述有共同属性的的数据,一共有11个符号。
它相当于计算机世界里面的英语,即计算机里面的通用语言!

1.4.1 基本正则元字符

优点:兼容性强
缺点:书写麻烦

1.4.2 扩展正则元字符

优化基本正则、添加新的元字符。
优点:书写简单
缺点:兼容性差,grep就不支持

1.4.3 转义元字符

二、sed

2.1 概述

Stream EDitor,流式编辑器。
非交互,基于模式匹配过滤及修改文本。一行一行读取,逐行处理,并将结果输出到屏幕。可实现对文本的输出、删除、替换、复制、剪切、导入、导出等各种操作。

2.2 基本格式

sed [选项] '编辑指令' 文件
前置命令 | sed [选项] '编辑指令'
选项:n,r,i
编辑指令:[定址符]处理动作
定址符:[条件1[,条件2]]
条件:行号或者/正则/
处理动作:p,d,s,a,i,c,r,w,H,h,G,g
举例:
sed -n '/^root/p' /etc/passwd #打印passwd文件中以root开头行

2.3 选项

2.3.1 sed -n

屏蔽默认输出

2.3.2 sed -r

支持扩展正则表达式,若与其他选项共用,必须作为首个选项

2.3.3 sed -i

对源文件进行实际操作

2.3.4 sed -e '' -e '' -e '' a.txt

同时对a.txt做三个操作

2.4 处理动作

2.4.1 p

打印
sed '3,5p' a.txt
打印a.txt的第3行,第5行

2.4.2 d

删除

2.4.3 s

替换关键字

2.4.4 a

在行号下面插入新的一行,如果行号为2,那么插入的行就是第3行
还可以插入多行,行之间用"\"连接
sed -i '1askip-networking' /etc/my.cnf#在第一行后面插入新行,内容为skip-networking

2.4.5 i

替换行号所在的一行,原来的行变成下一行,如果行号为2,那么插入的行就变成了第2行,原来的行变成了第3行

2.4.6 c

整行替换
sec '1c string' #把第一行替换为string

2.4.7 r

sed 3r c.txt
读取c.txt文件,把内容插入第3行之后

2.4.8 w

sed 1,3w c.txt#把1-3行另存为c.txt文件
sed 'w a.txt' c.txt#全文复制c.txt的内容到a.txt

2.4.9 H h G g

sed复制粘贴功能
模式空间:存放当前处理的行,将处理结果输出。若当前行不符合处理条件,则原样输出。处理完当前行之后再读入下一行
保持空间:作用类似于粘贴板,默认存放一个空行(\n)
H命令的功能:拷贝模式空间的内容,追加粘贴到保持空间。保持空间里面的空行不会被覆盖
h命令的功能:拷贝模式空间的内容,覆盖粘贴到保持空间。保持空间里面的空行被覆盖
G命令的功能:拷贝保持空间的内容,追加粘贴到模式空间
g命令的功能:拷贝保持空间的内容,覆盖粘贴到模式空间
示例:
sed '1,3H;$G' reg.txt #把1-3行的内容追加粘贴到文件末尾
sed '1h;1d;$G' reg.txt #把第1行剪切到文件末尾
sed '1h;2H;1,2d;$G' reg.txt #把1,2行剪切,粘贴到原第3行后面

2.5 替换关键字动作详细解释

2.5.1 s/old/new/

替换每行的第1个old为new

2.5.2 s/old/new/3

替换每行的第3个old为new

2.5.3 s/old/new/g

替换全部的old为new

2.5.4 s/()/\num/

()保留,复制
\粘贴
最多可以记住9个

素材文件test.txt
ni hao nb
welcome to beijing

把第一个字符和最后一个字符对调
sed -r 's/^(.)(.*)(.)$/\3\2\1/' test.txt
把第一个字符括起来,把中间任意字符括起来,再把最后一个字符括起来。这样就有3个括号,序号从1-3,把3和1对调就实现了

把第二个字符和倒数第二个字符对调
sed -r 's/^(.)(.)(.*)(.)(.)$/\1\4\3\2\5/' test.txt

2.5.5 s/doc/&s/

把doc替换为docs

2.5.6 sed '4,7s/^/#/'

将4-7行注释掉

2.6 sed命令示例

2.6.1 sed -n '4,+10p'

输出第4行及后面的10行,一共11行

2.6.2 sed $d

删除最后一行

2.6.3 sed /^$/d

删除全部空行

2.6.4 sed '/xml/!d'

删除不包含xml的行。!表示取反

2.6.5 sed -n /bash$/s#:.*##p /etc/passwd

查找能够登录系统的用户名

2.6.6 查找能够登录系统的用户名的密码

a=sed -n /bash$/s#:.*##p /etc/passwd
for i in $a
do
p1=grep "$i" /etc/shadow
p2=${p1:#:}
p3=${p2:%%:
}
echo $p3
done

本文转自 goldwinner 51CTO博客,原文链接:http://blog.51cto.com/355665/2071177,如需转载请自行联系原作者

Day05 egrep正则表达式sed相关推荐

  1. Linux---shell正则表达式---sed

    Linux-shell正则表达式-sed 一.什么是sed? ​ sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除.替换. ...

  2. 字符串的初值 正则表达式 sed应用

    目录 字符串的初值(备用值) 正则表达式 基础正则列表 扩展正则列表 基本正则: 扩展正则egrep: 基本元字符 {}限定次数 其他元字符 整体及边界匹配 sed基本用法 sed命令 命令格式 常见 ...

  3. grep 正则表达式 sed awk expect

    今日内容 grep : 过滤 sed :非交互式编辑文本 awk :格式化处理有规律的文本 expect : expect帮忙处理交互 三剑客命令的共性 : 1. 都支持正则表达式 2. 都支持管道 ...

  4. linux正则表达式sed

    sed.awk工具可以实现文本替换并且把替换的文本输出到屏幕上 sed和awk都是流式编辑器,是针对文档的行来操作的.sed通常用来替换操作. 示例的文本内容,以下操作根据此文本. 1 2 3 4 5 ...

  5. 关于grep,egrep正则表达式的常用用法

    正则表达式是一类字符所书写的模式(pattern) 元字符:不表示字符本身的意义,而用于额外功能性的描述:而如果在这些特定的字符前加/这个符号那么这些字符就表示原有的意思. 正则表达式:基本正则表达式 ...

  6. grep 与 egrep , 正则表达式与延伸正则表达式

    grep 预设是不支持延伸正则表达式的 egrep 是支持的 或者grep -E 也可以 ,和egrep是它的别名 先看基础正则表达式 x 特殊符号 不过使用时要写双[[   ]] echo 'Axy ...

  7. linux sed 正则提取字符串,linux正则表达式sed

    sed.awk工具可以实现文本替换并且把替换的文本输出到屏幕上 sed和awk都是流式编辑器,是针对文档的行来操作的.sed通常用来替换操作. 示例的文本内容,以下操作根据此文本.[root@yong ...

  8. egrep正则表达式

    匹配规则     '^': 锚定行首 '$': 锚定行尾 '.': 匹配任一一个字符 '*': 匹配零个或多个先前字符 '\?':匹配其前面的字符0次或者1次: '\+':匹配其前面的字符1次或者多次 ...

  9. Linux正则表达式sed、awk

    sed介绍 Sed是一个流处理编辑器,它能帮助我们自动处理文件.分析日志文件.修改配置文件等. Stream Editor文本流编辑,sed是一个"非交互式的"面向字符流的编辑器. ...

最新文章

  1. python内置方法就是内置函数_python内置函数
  2. Nginx小功能合集
  3. Lucene学习总结之六:Lucene打分公式的数学推导
  4. vue render
  5. JUnit 4.9(测试版3)中的规则
  6. 《在你身边,为你设计》-哪位知道下载、在线阅读地址啊?
  7. Pro*c使用滚动游标进行更新或删除游标行
  8. HTML5清除2个div标签的空白,DIV标签里面IMG图片下方留有空白怎么办
  9. 比手工模型快10~100倍,谷歌揭秘视频NAS三大法宝
  10. submit text 插件安装教程
  11. 图书馆占座系统(四)
  12. 流量清洗是什么意思?
  13. C#修改内存外挂源码
  14. 关于Latex出现Package CJK Error
  15. 分布式系统:FastRPC eRPC
  16. 微信小程序----开发小技巧(二)
  17. 为什么面向对象糟透了?
  18. android 设置应用权限管理,几种安卓权限管理应用介绍
  19. Partitioning by Palindromes UVA - 11584(DP)
  20. ubuntu下打开nsg2的命令

热门文章

  1. 空间计量模型_截面数据空间计量模型空间误差模型及Stata操作和应用
  2. java 云笔记本_java版云笔记(五)
  3. typora用什么文档管理_会展经济与管理专业自考本科毕业后有什么用
  4. 【论文阅读】SIR模型下网络中多信息源检测 2014-IEEE
  5. sublime c语言如何编译,Sublime Text 3 实现C语言代码的编译和运行(示例讲解)
  6. elisa标准曲线怎么做_Curve Expert软件绘制ELISA标准曲线流程 | 每日生物评论
  7. 微信公众号api关注接口php,微信公众平台接口开发入门示例
  8. pytest测试框架4-插件与hook函数
  9. 什么是pisa测试_PISA测试排名世界第一,中国教育已是世界冠军?
  10. python web生产环境_2020年了,python的web framework sanic 可以考虑生产环境部署了么?...