array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 第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内容如下:

[root@cloucentos6 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字段。

[root@cloucentos6 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指定命令行上的多重指令。三种方法实现多重指令。

[root@cloucentos6 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

 

[root@cloucentos6 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

 

[root@cloucentos6 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 动作。

[root@cloucentos6 home]# cat  filename

s/MA/,Massachusetts/

s/PA/,Pennsylvania/

s/CA/,California/

[root@cloucentos6 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打印出某个选择的资料。

[root@cloucentos6 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

 

[root@cloucentos6 home]# cat  -n  list  |  sed  - n  '4p'

     4     Terry Kalkas, 402 Lans Road, Beaver Falls PA

 

[root@cloucentos6 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

[root@cloucentos6 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删除指定行

[root@cloucentos6 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

 

[root@cloucentos6 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

 

[root@cloucentos6 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行到最后一行,

 

相关文章: