shell编程——sed用法
一、sed格式:
sed 参数 '正则表达式' 文件名
演示文件的内容:
[root@localhost ~]# cat test.sh
#!/bin/bash
第一行 12345!
第二行 23456@
第三行 34567#
第四行 45678$
第五行 56789%
sed默认是打印出文件内容的,不加正则表达式时会把文件内容全部打印出来,跟cat功能类似:
[root@localhost ~]# sed '' test.sh
#!/bin/bash
第一行 12345!
第二行 23456@
第三行 34567#
第四行 45678$
第五行 56789%
我们加-n参数取消sed的默认打印功能,在正则表达式中加p表示打印匹配表达式的内容,这里为空表示匹配所有,结果会把整个文件打印出来:
[root@localhost ~]# sed -n '' test.sh
[root@localhost ~]# sed -n 'p' test.sh
#!/bin/bash
第一行 12345!
第二行 23456@
第三行 34567#
第四行 45678$
第五行 56789%
现在我们打印第一行:
[root@localhost ~]# sed -n '1p' test.sh
#!/bin/bash
从第二行开始打印到四行,#!/bin/bash也算是一行
[root@localhost ~]# sed -n '2,4p' test.sh
第一行 12345!
第二行 23456@
第三行 34567#
把包含234的打印出来:
[root@localhost ~]# sed -n '/234/p' test.sh
第一行 12345!
第二行 23456@
当匹配内容里有特殊字符时需要加\屏蔽其特殊含义
[root@localhost ~]# sed -n '/\$/p' test.sh
第四行 45678$
注意:当匹配不到时会把整个文件打印出来
[root@localhost ~]# sed -n '/$/p' test.sh
#!/bin/bash
第一行 12345!
第二行 23456@
第三行 34567#
第四行 45678$
第五行 56789%
在第三行里查询包含字符“二”的内容,可用来判断该行是否存在该字符串
[root@localhost ~]# sed -n '/二/,3p' test.sh
第二行 23456@
把除了第一、二行外的其他内容打印出来:
[root@localhost ~]# sed -n '1,2!p' test.sh
第二行 23456@
第三行 34567#
第四行 45678$
第五行 56789%
经测试一个正则表达式中最多只能排除两行,三行就无效:
[root@localhost ~]# sed -n '1,2,4!p' test.sh
sed:-e 表达式 #1,字符 4:未知的命令:“,”
二、现在介绍下在正则表达式中常用的编辑命令:
p 打印匹配行
= 显示文件行号
a \ 在定位行号后附加新文本信息
i \ 在定位行号后插入新文本信息
d 删除定位行
c \ 用新文本替换定位文本
s 使用替换模式替换相应模式
r 从另一个文件中读文本
w 写文本到一个文件
q 第一个模式匹配完成后推出或立即推出
l 显示与八进制A S C I I代码等价的控制字符
{ } 在定位行执行的命令组
n 从另一个文件中读文本下一行,并附加在下一行
g 将模式2粘贴到/pattern n/
y 传送字符
n 延续到下一输入行;允许跨行的模式匹配语句
shell编程——sed用法的更多相关文章
- shell编程——sed用法之参数详解
sed格式: sed 参数 '正则表达式' 文件名 sed的常见参数有以下几种: 1.-n, --quiet, --silent 取消自动打印模式 不加n默认打印整个文件: [root@localho ...
- Shell 编程 基础用法
Shell 编程 更改shell脚本权限 chmod u+x shell.sh 标准头部写法 #! /bin/bash #! /bin/dash 变量使用 a=10 print $a 读取命令行参数 ...
- Shell编程—sed和gawk
1文本处理 1.1sed 编辑器 sed编辑器被称作流编辑器(stream editor),和普通的交互式文本编辑器恰好相反.在交互式文本编辑器中(比如vim),你可以用键盘命令来交互式地插入.删除或 ...
- Shell之sed用法 转滴
通过例子学习sed的用法 1,sed介绍 sed可删除(delete).改变(change).添加(append).插入(insert).合.交换文件中的资料行,或读入其它档的资料到 文> ...
- shell中sed用法
简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...
- shell编程sed笔记
源文件的内容 <modules> <module name="provider"> <!--发布模式--> <bds_mode/> ...
- Shell:sed用法 - 查找并替换字符串
原文链接 语法 sed 's/serach_str/replace_str/g' file_path 在某个文件中查找所有的serach_str并替换为replace_str 参数 描述 serach ...
- Shell编程—sed进阶
1多行命令 sed编辑器包含了三个可用来处理多行文本的特殊命令. N:将数据流中的下一行加进来创建一个多行组来处理. D:删除多行组中的一行. P:打印多行组中的一行. 1.1next命令 1. 单行 ...
- Linux Shell编程 sed命令
概述 sed 是一种几乎可以应用在所有 UNIX 平台(包括 Linux)上的轻量级流编辑器,体积小.所以,它可以对从如管道这样的标准输入中接收的数据进行编辑. sed 主要是用来将数据进行选取.替换 ...
随机推荐
- 前端(六):JavaScript面向对象之宿主对象
宿主对象即浏览器提供的对象,主要包括DOM对象和BOM对象. 一.DOM源起 1.SGML.XML和XHTML SGML(标准通用标记语言)是定义使用标签来表示数据的标记语言的语法. - 标签由一个小 ...
- APP开发浅谈-Fiddler抓包详解
Fiddler抓包工具在APP开发过程中使用非常频繁,对开发者理解HTTP网络传输原理以及分析定位网络方面的问题非常有帮助.今天抽点时间出来总结一下Fiddler在实际开发过程中的应用. 我开发过程中 ...
- CentOS 6.6下安装OpenOffice4.0
最近由于项目需要,要在公司服务器上安装Openoffice,网上搜了一些资料后成功安装,现分享给大家. 1.首先先下载好需要的rpm包:Apache_OpenOffice_4.0.0_Linux_x8 ...
- 《DSP using MATLAB》示例Example 9.5
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- BZOJ1725,POJ3254 [Usaco2006 Nov]Corn Fields牧场的安排
题意 Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行\((1 \leq M \leq 12, 1 \leq N \leq 12)\),每一格都是一块正方形的土地.FJ打算在牧场 ...
- 基于C#的UDP协议的同步实现
一.摘要 总结基于C#的UDP协议的同步通信. 二.实验平台 Visual Studio 2010 三.实验原理 UDP传输协议同TCP传输协议的区别可查阅相关文档,此处不再赘述. 四.实例 4.1 ...
- 笔记:NPM 无限需要依赖问题解决
笔记:NPM 无限需要依赖问题解决 起因 因为想学一下 VUE,开始跟着教程一步一步输出命令,开始也没有什么问题,一切都很顺利. 突然不知道是哪一步出了问题,一直让我安装依赖,没完没了,开始并不觉得有 ...
- Python中文报错问题
异常信息:SyntaxError: Non-ASCII character '\xe6' in file D:/pythonlearning/HelloPython.py on line 8, but ...
- 在AWS EMR上运行Map Reduce的Java示例程序 及 操作小计
下面的代码中AffairClient类中包含了三个内之类,分别对应于Hadoop Mapreduce程序运行所需的Mapper类,Reducer类,和主类.AffairClient类中其余方法用于配置 ...
- elastic search6.2.2 实现用户搜索记录查询(去重、排序)
elastic search6.2.2 实现搜索记录查询 ,类似新浪微博这种,同样的搜索记录后面时间点的会覆盖前面的(主要思路:关键词去重,然后按时间排序) 先创建索引 //我的搜索 PUT my_s ...