一、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用法的更多相关文章

  1. shell编程——sed用法之参数详解

    sed格式: sed 参数 '正则表达式' 文件名 sed的常见参数有以下几种: 1.-n, --quiet, --silent 取消自动打印模式 不加n默认打印整个文件: [root@localho ...

  2. Shell 编程 基础用法

    Shell 编程 更改shell脚本权限 chmod u+x shell.sh 标准头部写法 #! /bin/bash #! /bin/dash 变量使用 a=10 print $a 读取命令行参数 ...

  3. Shell编程—sed和gawk

    1文本处理 1.1sed 编辑器 sed编辑器被称作流编辑器(stream editor),和普通的交互式文本编辑器恰好相反.在交互式文本编辑器中(比如vim),你可以用键盘命令来交互式地插入.删除或 ...

  4. Shell之sed用法 转滴

    通过例子学习sed的用法 1,sed介绍    sed可删除(delete).改变(change).添加(append).插入(insert).合.交换文件中的资料行,或读入其它档的资料到 文> ...

  5. shell中sed用法

    简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...

  6. shell编程sed笔记

    源文件的内容 <modules> <module name="provider"> <!--发布模式--> <bds_mode/> ...

  7. Shell:sed用法 - 查找并替换字符串

    原文链接 语法 sed 's/serach_str/replace_str/g' file_path 在某个文件中查找所有的serach_str并替换为replace_str 参数 描述 serach ...

  8. Shell编程—sed进阶

    1多行命令 sed编辑器包含了三个可用来处理多行文本的特殊命令. N:将数据流中的下一行加进来创建一个多行组来处理. D:删除多行组中的一行. P:打印多行组中的一行. 1.1next命令 1. 单行 ...

  9. Linux Shell编程 sed命令

    概述 sed 是一种几乎可以应用在所有 UNIX 平台(包括 Linux)上的轻量级流编辑器,体积小.所以,它可以对从如管道这样的标准输入中接收的数据进行编辑. sed 主要是用来将数据进行选取.替换 ...

随机推荐

  1. BZOJ2049 SDOI2008 Cave 洞穴勘测 【LCT】

    BZOJ2049 SDOI2008 Cave 洞穴勘测 Description 辉辉热衷于洞穴勘测.某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉发现这片区域由n个洞穴(分 ...

  2. 《selenium2 python 自动化测试实战》(10)——下拉框和alert

    # coding: utf-8 from selenium import webdriverfrom selenium.webdriver.common.action_chains import Ac ...

  3. ES6中let和const详解

    let和var一样也是用来定义变量,不同之处在于let是块级作用域,只在所定义的块级作用域中生效,一个花括号便是一个块级作用域 {var a="我是var定义的";let b=&q ...

  4. Sprint第一个冲刺(第四天)

    一.Sprint介绍 今天我们完成了点餐界面及美化的任务,是通过TabActivity来实现的,界面可以进行滑动来进行点餐. 下面是实验截图: 任务进度: 二.Sprint周期 看板: 燃尽图:

  5. CentOS 添加常用 yum 源(转)

    CentOS 的官方源去掉了一些与版权有关的软件,因此想要安装这些软件或者手动下载安装,或者使用其他源. 下面我推荐常用的两个源, 这两个源基本可以满足一般服务器的使用需求. 首先, 添加源之前要确定 ...

  6. logcat调试系统

    日志存放位置:/dev/log shell@xxx:/ $ ls /dev/log -l crw-rw-rw- root log , -- : events crw-rw-rw- root log , ...

  7. webpack中imports-loader,exports-loader,expose-loader的区别

    Webpack有几个和模块化相关的loader,imports-loader,exports-loader,expose-loader,比较容易混淆.今天,我们来理一理. imports-loader ...

  8. 使用Apache POI操作Excel文件---在已有的Excel文件中插入一行新的数据

    package org.test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundEx ...

  9. Firewalld防火墙与ICMP攻击

    原文地址:http://www.excelib.com/article/293/show 提到ICMP大家应该都很熟悉,可能有人会说:不就是ping吗?但是说到ICMP攻击以及相关防御措施可能就有的人 ...

  10. linux下thinkphp取消调试模式后找不到网页解决方案

    1.最大嫌疑是Runtime目录权限不足,导致common~runtime.php文件无法生成, 解决:1.整个Runtime目录删除,让系统重新生成; 2.给Runtime及以下的所有文件足够权限0 ...