正则表达式,sed简单用法
一. 正则表达式
1. 常见的正则表达式字符
[] 匹配字符集 grep "bl[lo]g" oldboy.txt 表示字符‘l’或者‘o’都可匹配
* 重复前面字符任意次 grep "bl*g" oldboy.txt
.* 表示任意多个字符
[^] 表示非 grep "【^oldboy】" oldboy.txt 匹配文档中不是“oldboy”当中的任意字符
a{n,m} 重复字符a 最少n次,最多m次
a{,m} 重复字符a 最少0次,最多m次 #有些版本这个不支持了
a{n,} 重复字符a 最少n次
a{n} 重复字符a n次
2. 扩展的正则表达式:grep -E或者egrep
a+ : 重复字符a 一次以上 grep -E "490+480" oldboy.txt; 等价于a{1,}
a? : 重复字符a 0次或者1次 等价于a{,1}或者a{0,1}
| :用或的方式查找多个符合条件的字符 注意这里的符号“|” 前后不能有空格,个人理解等价于[]
() : 小括号内表示把多个字符当做一组进行查找,相当于一个字符
例子1.

二. sed常见用法
常用选项:
-n:取消默认输出,只有经过sed特殊处理的那一行(或者动作)才会被列出来
-e:进行多项编辑,即对输入行应用多条sed命令时使用
-f:指定sed脚本的文件名,直接将sed的动作写在一个档案内,-f filename可以执行filename内的sed动作
-r:可支持扩展正则表达式
-i:直接修改读取的文件内容,而不是由屏幕输出


插入
sed -i '1 i oldboy' aa.txt
.png)
.png)
多点编辑 (sed -e)
sed -e '1,10d' -e 's/My/Your/g' datafile
直接编辑文件内容 (sed -i)
sed -i -e '2 i character_set_server=uft8' -e '3 i binlog_format=row' /etc/my.cnf
优化1:消除空格,使用i是在目前的上一行插入数据
sed -i -e '2 i character_set_server=uft8' -e '2 i binlog_format=row' /etc/my.cnf 说明sed是从前到后按命令分步执行的。 优化2:消除空格,使用a是在目前的下一行插入数据,这个使用了转义字符\n来换行,这样就不用多点编辑选项-e了
sed -ir "/[mysqld]/ a character_set_server=utf8 \nbinlog_format=row" /etc/mysql/my.cnf
三. sed实战
以网卡eth0的输出信息为例,取出10.0.0.7这个IP地址

1. sed过滤第二行
ifconfig eth0 |sed -n '/inet addr/p'
或者
ifconfig eth0 | sed -n '2p'
特别要注意后面的p必须在单引号内,p就是输出的意思,n是取消默认输出。输出信息为

2. 用sed的参数sg进行全局替换,格式为sed 's###g'
1)替换10.0.0.7前面的字符,口诀就是以什么开头,以挨着目标前面的字符结尾

2)然后,干掉后面的字符,
需要再来一个替换,严格上来讲,要以2个空格Bc开头,任意字符结尾,这里直接用Bc开头也行,sed 's# Bc.*$##g' (这里末尾可不用$)

3. 用sed完全匹配ip地址,用()限定ip地址组,它的作用是相当于一个字符
ifconfig eth0 | sed -rn 's#^.*inet addr:(.*) Bcast.*$#\1#gp'
说明:
1. -r(regexp-extended),sed -nr 这样小括号前就不需要用转义字符了
2. sed中\1表示命令中的从左边数第一个小括号()的输出内容,同理 \2 表示第2个小括号内容,当然这里只有1个小括号,就不存在\2的情况了
4. 补充例子
正则表达式,sed简单用法的更多相关文章
- sed 简单用法
sed的一个简单用法: eg:在某一个文件中的一个aaa字段前后添加某些字段. 在aaa前面添加字段:sed -ne 's/aaa/&HELLO/p' test 输出结果:aaaHELLO 在 ...
- sed简单用法
参数说明: -e 以指定的script来处理输入的文本文件 -f 以指定的script文件来处理输入的文本文件 -h 显示帮助 -n 仅显示script处理后的结果 -V 显示版本信息 -v 反选 动 ...
- UltraEdit中使用正则表达式-简单用法
UltraEdit中使用正则表达式 1.认识正则表达式语法: 正则表达式 (UltraEdit Syntax): % 匹配行首 - 表明要搜索的字符串一定在行首. $ 匹配行尾 - 表明要搜索的字符串 ...
- sed命令用法详解
sed命令用法 sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为『模式空间』(pattern space) ...
- Shell基础(五):sed基本用法、使用sed修改系统配置、sed多行文本处理、sed综合脚本应用
一.sed基本用法 目标: 本案例要求熟悉sed命令的p.d.s等常见操作,并结合正则表达式,完成以下任务: 1> 删除文件中每行的第二个.最后一个字符 2> 将文件中每行的第一个. ...
- linux中sed的用法【转】
sed命令行格式为: sed [-nefri] ‘command’ 输入文本/文件 常用选项: -n∶取消默认的输出,使用安静(silent)模式.在一般 sed 的 ...
- NSCharacterSet 简单用法
NSCharacterSet 简单用法 NSCharacterSet其实是许多字符或者数字或者符号的组合,在网络处理的时候会用到 NSMutableCharacterSet *base = [NSMu ...
- sed基本用法
sed命令基本用法sed是一个非交互式文本编辑器,它可以对文本文件和标准输入进行编辑,标准输入可以是来自键盘输入.文件重定向.字符串.变量.来自管道的文本等等.sed从文本的一个文本行或标准输入中读取 ...
- Linux中sed的用法实践
Linux中sed的用法实践 参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html http://www.fn139 ...
随机推荐
- JRE,JVM,JDK
JRE,JVM,JDK的关系.JRE(Java Runtime Environment)java运行环境,我们可以把它看成是一个操作系统.也就是说JRE提供了Java执行的软件平台. JVM (Jav ...
- p4475 巧克力王国
传送门 分析 我们多维护一个值,代表某个点子树中所有点的权值和 于是如果某个点它的min和max乘a(/b)的值小于范围则直接把整个子树都加进去 估价函数就是这个点的子树中的理论最小值 代码 #inc ...
- [模板]割点(tarjan)
洛谷P3388 注意:记得tarjan的打法 注意割点的判断条件:子节点个数>2并且为根节点 当它不为根节点时并且low[to]>dfn[u] 判断时是在子节点未被记录的时候 #incl ...
- mybatis思维导图(二)
写在前面 上一篇文章写了mybatis的基本原理和配置文件的基本使用,这一篇写mybatis的使用,主要包括与sping集成.动态sql.还有mapper的xml文件一下复杂配置等.值得注意的是,导图 ...
- 下拉菜单--JavaScript触发方法
1. $(function(){ $(".dropdown-toggle").one("click",function(){ $(this).dropdown( ...
- Spring AOP 详解 【转】
此前对于AOP的使用仅限于声明式事务,除此之外在实际开发中也没有遇到过与之相关的问题.最近项目中遇到了以下几点需求,仔细思考之后,觉得采用AOP 来解决.一方面是为了以更加灵活的方式来解决问题,另 ...
- Alpha冲刺(六)
Information: 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Details: 组员1(组长)柯奇豪 - 过去两天完成了哪些任务 1. 基于ssm框架的前后端交互 ...
- 2、Semantic-UI之网格布局
2.1 网格布局 在semantic-ui中提供了16个网格,使用class="column",当然也可以通过数字来表示当前网格大小. 在Semantic-UI中定义的网格 ...
- speedbutton用法
- 面试题: 已知一个含有n个不同元素的集合,要求打印其所有具有k个元素的子集(不允许有重复的)
TX面试题2: 已知一个含有n个元素的集合,要求打印其所有具有k个元素的子集(不允许有重复的) 题目分析, 为了便于说明,不妨将问题简化一下: 已知一个盒子中有n个不同的球,分别标记为{a1,a2,. ...