第11章:sed进阶操作

第11章:sed进阶操作

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法

sed命令行格式为:

 sed  [option]  ‘command’  输入文本

[option] 常用选项:

-n  ---   使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。

-e  ---   直接在指令列模式上进行 sed 的动作编辑。

-f  ---   直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作。

-r  ---   sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)。

-i  ---   直接修改读取的档案内容,而不是由屏幕输出。

‘command’ 常用命令:

a   ------    新增

c   ------    取代

d   ------    删除

i    ------    插入

p   ------    列印

s   ------     替换

举例:

Linux系统创建了一个测试文本list,后续部分范例会使用到list测试文本,测试文本list内容如下:

[[email protected] home]# cat list

John Daggett, 341 King Road, Plymouth MA

Alice Ford, 22 EAST Broadway, Richmond VA

Orville Thomas, 11345 Oak Bridge Road, Tulsa OK

Terry Kalkas, 402 Lans Road, Beaver Falls PA

Eric Adams, 20 Post Road, Sudbury MA

Hubert Sims, 328A Brook Road, Roanoke VA

Amy Wilde, 334 Bayshore Pkwy, Mountain View CA

Sal Carpenter, 73 6th Street, Boston MA

范例1:’command’ 常用命令 s替换,把list文本MA字段替换成Massachusetts字段。

[[email protected] home]# sed  ‘s/MA/Massachusetts/‘  list

John Daggett, 341 King Road, Plymouth Massachusetts

Alice Ford, 22 EAST Broadway, Richmond VA

Orville Thomas, 11345 Oak Bridge Road, Tulsa OK

Terry Kalkas, 402 Lans Road, Beaver Falls PA

Eric Adams, 20 Post Road, Sudbury Massachusetts

Hubert Sims, 328A Brook Road, Roanoke VA

Amy Wilde, 334 Bayshore Pkwy, Mountain View CA

Sal Carpenter, 73 6th Street, Boston Massachusetts

知识点补充:command’ 常用命令 s替换选项并不会影响list文本原来的内容。

范例2:[option] 常用选项 -e指定命令行上的多重指令。三种方法实现多重指令。

[[email protected] home]# sed  ‘s/MA/,Massachusetts/;s/PA/,Pennsylvania/‘  list

John Daggett, 341 King Road, Plymouth ,Massachusetts

Alice Ford, 22 EAST Broadway, Richmond VA

Orville Thomas, 11345 Oak Bridge Road, Tulsa OK

Terry Kalkas, 402 Lans Road, Beaver Falls ,Pennsylvania

Eric Adams, 20 Post Road, Sudbury ,Massachusetts

Hubert Sims, 328A Brook Road, Roanoke VA

Amy Wilde, 334 Bayshore Pkwy, Mountain View CA

Sal Carpenter, 73 6th Street, Boston ,Massachusetts

[[email protected] home]# sed  -e ‘s/MA/,Massachusetts/‘  -e ‘s/PA/,Pennsylvania/‘  list

John Daggett, 341 King Road, Plymouth ,Massachusetts

Alice Ford, 22 EAST Broadway, Richmond VA

Orville Thomas, 11345 Oak Bridge Road, Tulsa OK

Terry Kalkas, 402 Lans Road, Beaver Falls ,Pennsylvania

Eric Adams, 20 Post Road, Sudbury ,Massachusetts

Hubert Sims, 328A Brook Road, Roanoke VA

Amy Wilde, 334 Bayshore Pkwy, Mountain View CA

Sal Carpenter, 73 6th Street, Boston ,Massachusetts

[[email protected] home]# sed  ‘

> s/MA/,Massachusetts/

> s/PA/,Pennsylvania/‘ list

John Daggett, 341 King Road, Plymouth ,Massachusetts

Alice Ford, 22 EAST Broadway, Richmond VA

Orville Thomas, 11345 Oak Bridge Road, Tulsa OK

Terry Kalkas, 402 Lans Road, Beaver Falls ,Pennsylvania

Eric Adams, 20 Post Road, Sudbury ,Massachusetts

Hubert Sims, 328A Brook Road, Roanoke VA

Amy Wilde, 334 Bayshore Pkwy, Mountain View CA

Sal Carpenter, 73 6th Street, Boston ,Massachusetts

知识点补充:’command’并不是任何情况下都需要将指令用单引号括起来,但需要养成这个好习惯。使用单引号可以阻止shell解释编辑指令中的特殊字符或空格。

范例3:[option] 常用选项 -f直接将 sed 的动作写在一个文本内, -f 文本则可以执行文本内的sed 动作。

[[email protected] home]# cat  filename

s/MA/,Massachusetts/

s/PA/,Pennsylvania/

s/CA/,California/

[[email protected] home]# sed  -f  filename  list

John Daggett, 341 King Road, Plymouth ,Massachusetts

Alice Ford, 22 EAST Broadway, Richmond VA

Orville Thomas, 11345 Oak Bridge Road, Tulsa OK

Terry Kalkas, 402 Lans Road, Beaver Falls ,Pennsylvania

Eric Adams, 20 Post Road, Sudbury ,Massachusetts

Hubert Sims, 328A Brook Road, Roanoke VA

Amy Wilde, 334 Bayshore Pkwy, Mountain View ,California

Sal Carpenter, 73 6th Street, Boston ,Massachusetts

知识点补充:再次提醒,显示屏幕上的结果只是临时的,原文本list并没有发生改变。

范例4:[option] 常用选项 –n只打印经过sed 特殊处理的那一行(或者动作)才会被列出来,通常与’command’ 常用命令p打印出某个选择的资料。

[[email protected] home]# sed  -n  ‘s/MA/Massachusetts/p‘  list

John Daggett, 341 King Road, Plymouth Massachusetts

Eric Adams, 20 Post Road, Sudbury Massachusetts

Sal Carpenter, 73 6th Street, Boston Massachusetts

[[email protected] home]# cat  -n  list  |  sed  - n  ‘4p‘

4     Terry Kalkas, 402 Lans Road, Beaver Falls PA

[[email protected] home]# cat  -n  list  |  sed  -n  ‘1,4p‘

1     John Daggett, 341 King Road, Plymouth MA

2     Alice Ford, 22 EAST Broadway, Richmond VA

3     Orville Thomas, 11345 Oak Bridge Road, Tulsa OK

4     Terry Kalkas, 402 Lans Road, Beaver Falls PA

[[email protected] home]# cat  -n  list  |  sed  -n  ‘1p;4p‘

1     John Daggett, 341 King Road, Plymouth MA

4     Terry Kalkas, 402 Lans Road, Beaver Falls PA

知识点补充:2,$p打印第二行到最后一行,$p打印最后一行

范例5:’command’ 常用命令d删除指定行

[[email protected] home]# cat  -n  list  |  sed  ‘4d‘

1     John Daggett, 341 King Road, Plymouth MA

2     Alice Ford, 22 EAST Broadway, Richmond VA

3     Orville Thomas, 11345 Oak Bridge Road, Tulsa OK

5     Eric Adams, 20 Post Road, Sudbury MA

6     Hubert Sims, 328A Brook Road, Roanoke VA

7     Amy Wilde, 334 Bayshore Pkwy, Mountain View CA

8     Sal Carpenter, 73 6th Street, Boston MA

[[email protected] home]# cat  -n  list  |  sed  ‘1,4d‘

5     Eric Adams, 20 Post Road, Sudbury MA

6     Hubert Sims, 328A Brook Road, Roanoke VA

7     Amy Wilde, 334 Bayshore Pkwy, Mountain View CA

8     Sal Carpenter, 73 6th Street, Boston MA

[[email protected] home]# cat  -n  list  |  sed  ‘1d;4d;8d‘

2     Alice Ford, 22 EAST Broadway, Richmond VA

3     Orville Thomas, 11345 Oak Bridge Road, Tulsa OK

5     Eric Adams, 20 Post Road, Sudbury MA

6     Hubert Sims, 328A Brook Road, Roanoke VA

7     Amy Wilde, 334 Bayshore Pkwy, Mountain View CA

知识点补充: $d删除最后一行,/^$/d删除空行,50,$d删除从50行到最后一行,

时间: 2024-10-31 12:24:16

第11章:sed进阶操作的相关文章

零基础学Python--------第11章 使用Python操作数据库

第11章 使用Python操作数据库 11.1 数据库编程接口 在项目开发中,数据库应用必不可少.虽然数据库的种类有很多,如SQLite.MySQL.Oracle等,但是它们的功能基本都是一样的,为了对数据库进行统一的操作,大多数语言都是提供了简单的.标准化的数据库接口(API).在Python Database API 2.0 规范中,定义了Python数据库API接口的各个部分,如模块接口.连接对象.游标对象.类型对象和构造器.DB API 的可选扩展以及可选的错误处理机制等.下面重点介绍一

第10章:awk进阶操作

第10章:awk进阶操作 在第4章:查找与替换简单的讲解了awk的使用,本章介绍详细讲解awk的使用.awk是一个强大的文本分析工具,简单的说awk就是把文件逐行的读入, 以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理.在shell脚本中文本处理功能awk功能其强大. 7.1.awk命令形式 awk命令在shell脚本基本形式通常由四部分组成: [-F|-f|-v] (参数选项).BEGIN语句块(初始化代码块).pattern{commadns}(能够使用模式匹配的通用语句块).E

深入浅出Zabbix 3.0 -- 第二章 Zabbix Web操作与定义

第二章  Zabbix Web操作与定义 本章介绍Zabbix 中一些基本概念的定义和web前端页面的操作,包括Zabbix中使用的一些术语的定义,Web页面中用户管理.主机和主机组的管理,以及监控项.模板.触发器.告警的管理和操作,还有Graphs.Screens.Maps及Reports等.通过本章的学习掌握一些基本概念并能够通过Web页面的操作完成对Zabbix的管理. 2.1 定义 hosts(主机) Zabbix中需要监控的服务器.交换机及其他设备我们都统一称作host,这些设备与Za

锋利的jQuery第2版学习笔记8~11章

第8章,用jQuery打造个性网站 网站结构 文件结构 images文件夹用于存放将要用到的图片 styles文件夹用于存放CSS样式表,个人更倾向于使用CSS文件夹 scripts文件夹用于存放jQuery脚本,个人更倾向于使用JS文件夹存放所有的js及jQuery脚本 编写CSS样式 推荐首先编写全局样式,接着编写可大范围内重用的样式,最后编写细节样式,这样根据CSS最近优先原则,可以较容易地对网站进行从整体到细节样式的定义 第9章,jQuery Mobile jQuery Mobile主要

05 Scala 数组的基本操作,数组的进阶操作和多维数组

1. 数组的基本操作 1)定长数组 数组的概念和C,JAVA中的数组是一样的, 都是存储同一种类型的元素.定长数组存储一定长度的数组.    //声明一个数组,类型为Int,元素个数为10. val nums = new Array[Int](10) //声明一个数组,类型为String元素个数为10 . val a = new Array[String](10) //声明一个数组,初始化第一个元素为'Hello',第二个元素为"World",通过类型推到,判断出//数组的类型为Str

《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(1)-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(2)-读书笔记 <TCP/IP详解卷1:协议>第4章 ARP:地址解析协议-读书笔记 <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议-读书笔记 <TCP/IP详解卷1:协

统计学习方法 李航---第11章 条件随机场

第11章 条件随机场 条件随机场(conditional random field, CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫随机场.条件随机场可以用于不同的预测问题,本章主要讲述线性链(linear chain)条件随机场在标注问题的应用,这时问题变成了由输入序列对输出序列预测的判别模型,形式为对数线性模型,其学习方法通常是极大似然估计或正则化的极大似然估计. 11.1 概率无向图模型 概率无向图模型(probabilist

web框架-(七)Django补充---models进阶操作及modelform操作

通过之前的课程我们可以对于Django的models进行简单的操作,今天了解下进阶操作和modelform: 1. Models进阶操作 1.1 字段操作 AutoField(Field) - int自增列,必须填入参数 primary_key=True AutoField(int自增列) BigAutoField(AutoField) - bigint自增列,必须填入参数 primary_key=True BigAutoField 注:当model中如果没有自增列,则自动会创建一个列名为id的

第11章 全局属性和其它

第 11 章全局属性和其他 学习要点: 1.实体 2.元数据 3.全局属性 本章主要探讨 HTML5中的  HTML实体.以及 HTML核心构成的元数据,最后了解一 下 HTML中的全局属性. 一.实体 HTML实体就是将有特殊意义的字符通过实体代码显示出来 字符 说明 字符实体名 十进制实体 无断行空格 ¡ 倒置的感叹号 ¡ ¡ ¢ 美分符号 ¢ ¢ £ 英镑符号 £ £ ¤ 货币符号 ¤ ¤ ¥ 元符号 ¥ ¥ ¦ 间断竖杆 ¦ ¦ § 部分符号 § § ¨ 二连续元音分音符 ¨ ¨ © 版