`
qindongliang1922
  • 浏览: 2183932 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117534
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125921
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59907
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71301
社区版块
存档分类
最新评论

跟散仙学shell编程(十一)

阅读更多
上篇散仙写了关于shell里面正则的基础知识,本篇我们来特意学习下sed的高级用法。在前面散仙也写过关于sed的基础用法,如果不熟悉的,可以看散仙的前2篇博客温习一下。


sed进阶里面有sed的高级用法,使用sed来处理多行命令,下面我们来看下sed里面特殊的命令:
N:将数据流中的下一行加进来来创建一个多行组来处理
D:删除多行组中的一行
P:打印多行组中的一行

next命令小写的n,会告诉sed编辑器移动到数据流中的下一行文本,而不用重新回到命令的最开始再执行一遍:

[search@h1 821]$ cat a.txt 
a

b

c

[search@h1 821]$ sed '/^$/d' a.txt 
a
b
c
[search@h1 821]$ 


删除空白行,现在的需求是删除头行之后的空白行,留下最后一行之前的空白行。

[search@h1 821]$ cat a.txt 
a

b

c
[search@h1 821]$ sed '/a/{n ; d}' a.txt 
a
b

c
[search@h1 821]$ 


在这个例子中,脚本要查找含有a单词的唯一行,然后一旦找到它,n命令便会移动到下一行来判断删除,

下面看下如何合并文本:
[search@h1 821]$ cat b.txt 
this is a
this is b
hadoop
lucene
[search@h1 821]$ sed '/b/{N ; s/\n/ / }' b.txt 
this is a
this is b hadoop
lucene
[search@h1 821]$ 


依旧是使用查询命令,组合替换命令来合并行
[search@h1 821]$ cat c.txt 
我们中国
人
我们的祖国
是china
[search@h1 821]$ sed 'N ; s/中国.人/中国公民/ ' c.txt 
我们中国公民
我们的祖国
是china
[search@h1 821]$ 


下面看下多行删除命令:

[search@h1 821]$ cat d.txt 

a

b

c
[search@h1 821]$ sed '/^$/{N ; /a/D}' d.txt       
a

b

c
[search@h1 821]$ 


删除第一个空白行。

下面看下多行打印命令:


[search@h1 821]$ cat d.txt 

a

b

c
[search@h1 821]$ sed -n 'N ; /a/P' d.txt 

[search@h1 821]$ sed -n 'N ; /a*/P' d.txt 



[search@h1 821]$ 

下面看下排序命令:

[search@h1 821]$ cat d.txt 

a

b

c
[search@h1 821]$ sed -n '/a/!p' d.txt 


b

c
[search@h1 821]$ 


感叹号代表取反的意思

下面看下利用正则通配,替换字符:
[search@h1 821]$ echo "this cat sleep in hist cat" | sed 's/.at/".at"/g'
this ".at" sleep in hist ".at"
[search@h1 821]$ 


下面我们看下,如何在原来的单词上,加上重点标记:
[search@h1 821]$ echo "this cat sleep in hist cat" | sed 's/.at/"&"/g'  
this "cat" sleep in hist "cat"
[search@h1 821]$ 


&符号,可以给本身的这个单词加上替换标记


下面看一些实战小例子:
加倍行间距
[search@h1 821]$ cat d.txt 

a

b

c
[search@h1 821]$ sed 'G' d.txt 


a



b



c

[search@h1 821]$



去掉末尾的空白行,加倍后:
[search@h1 821]$ cat d.txt 

a

b

c
[search@h1 821]$ sed 'G' d.txt 


a



b



c

[search@h1 821]$ sed '$!G' d.txt 


a



b



c
[search@h1 821]$ 

格式化原来的行:
[search@h1 821]$ cat e.txt 
aa
bb

cc





ddd
[search@h1 821]$ sed '/^$/d;$!G' e.txt 
aa

bb

cc

ddd
[search@h1 821]$ 

给文件加个行数:
[search@h1 821]$ cat d.txt 

a

b

c
[search@h1 821]$ sed '=' d.txt 
1

2
a
3

4
b
5

6
c
[search@h1 821]$ 

比较难看,换一种方式:
[search@h1 821]$ cat d.txt 

a

b

c
[search@h1 821]$ sed '=' d.txt 
1

2
a
3

4
b
5

6
c
[search@h1 821]$ sed '=' d.txt | sed 'N; s/\n/ /' 
1 
2 a
3 
4 b
5 
6 c
[search@h1 821]$ 


只打印最后一行:

[search@h1 821]$ cat b.txt 
this is a
this is b
hadoop
lucene
[search@h1 821]$ sed -n '$p' b.txt 
lucene
[search@h1 821]$ 

删除多余的空白行:
[search@h1 821]$ cat tt.txt 
a

bb

b

t





xy
[search@h1 821]$ sed '/./,/^$/!d' tt.txt 
a

bb

b

t

xy
[search@h1 821]$ 


删除开头的空白行:
[search@h1 821]$ cat cc.txt 

solr

hadoop
[search@h1 821]$ sed '/./,$!d' cc.txt 
solr

hadoop
[search@h1 821]$ 

删除html标签:
[search@h1 821]$ cat data 

<head>


this is a cat



<div>


i have a div

</div>


</head>
[search@h1 821]$ sed  's/<[^>]*>//g;/^$/d' data 
this is a cat
i have a div
[search@h1 821]$ 








0
1
分享到:
评论

相关推荐

    跟老男孩学Linux运维:Shell编程实战 PDF

    跟老男孩学Linux运维:Shell编程实战 PDF跟老男孩学Linux运维:Shell编程实战 PDF

    跟老男孩学Linux运维:Shell编程实战

    《跟老男孩学Linux运维:Shell编程实战》分为五大部分:部分为第1章~第4章,此部分着重介绍新手如何学好Shell编程。涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量...

    跟老男孩学Linux运维:Shell编程实战.pdf 高清 带书签

    资深运维架构实战专家及教育培训界*专家十多年的运维实战经验总结,全面系统地讲解运维工作中Shell编程所需的知识点和Shell编程的各种企业级案例。

    shell编程入门经典--LINUX与UNIX Shell编程指南 (中文pdf版)

    《LINUX与UNIX Shell编程指南》是一本专为初学者设计的shell编程教程,它深入浅出地介绍了在Linux和UNIX系统中如何使用Shell进行高效自动化任务处理。Shell编程是Linux和UNIX系统中的核心技术,它允许用户通过命令行...

    Windows Shell 编程.pdf

    Windows Shell 编程.pdf 看过一些对windows 外壳的扩展程序,在使用上一般都是直接利用windows的外壳API做一些工作,因为外壳操作需要一些比较专业的知识,因此,大部分编程人员特别是使用集成编程环境的程序人员对...

    shell编程学习资料

    Shell编程是Linux/Unix系统中不可或缺的一部分,它是一种命令行解释器,允许用户与操作系统进行交互,执行系统命令,以及编写脚本自动化任务。在本文中,我们将深入探讨Shell编程的基础知识,包括基本命令、变量、...

    Shell编程中文手册.pdf

    Shell 编程中文手册 本手册涵盖了 Shell 编程的基础知识,包括 Shell 概述、Shell 解析器、Shell 脚本入门、Shell 中的变量等。 Shell 概述 Shell 是一种命令行接口,允许用户与操作系统进行交互。学习 Shell ...

    shell编程入门教程+shell脚本专家指南+UNIX.shell编程24小时教程.rar

    《shell编程入门教程》、《shell脚本专家指南》以及《UNIX.shell编程24小时教程》会提供详尽的实例和练习,帮助你巩固所学并深化理解。 总之,Shell编程是Linux/Unix环境中不可或缺的技能,它能够提高工作效率,...

    shell编程题目练习

    shell编程题目练习,练习基本的shell编程,学习脚本语言,提高效率

    跟老男孩学Linux运维:Shell编程实战 完整版 pdf

    跟老男孩学Linux运维:Shell编程实战 完整版 pdf

    Linux与UNIX Shell编程指南.pdf

    "Linux与UNIX Shell编程指南" Linux与UNIX Shell编程指南是计算机科学领域中一本经典的指南手册,旨在帮助读者快速掌握Linux与UNIX操作系统下的shell编程技术。下面是从该书中生成的相关知识点: 1. Shell概述 ...

    Shell编程高级进阶系列视频.zip

    13Linux下Shell编程之While case演练 14Linux下Shell编程之While case演练 15Shell编程之函数及脚本案例讲解 16Shell编程之函数及脚本案例讲解 17Linux下Shell编程FIND、SED命令实战 18Linux下Shell编程FIND、SED...

    Windows Shell 编程指南与实例

    《Windows Shell 编程指南与实例》是一本深入探讨Windows操作系统壳层编程技术的专业书籍。在Windows系统中,Shell指的是用户界面,它为用户提供与操作系统交互的环境,包括桌面、开始菜单、快捷方式等。Shell编程则...

    UNIX命令及SHELL编程

    这是一套完整的Unix培训教材,包括Unix常用命令及SHELL编程基础与高级技巧,PDF格式,共30个文件。另有2个Word文档。包内文件清单如下: 01_Shell-文件安全与权限.PDF 02_Shell-使用find和xargs.PDF 03_Shell-...

    Unix Shell Shell编程

    6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书 6本pdf及chm的shell 编程的书

    shell编程个人笔记

    shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人笔记shell编程个人...

    shell demo及编程pdf

    **Shell编程介绍** Shell编程是Linux/Unix操作系统中的一种脚本语言,用于自动化日常任务,交互式地控制操作系统,以及实现系统级别的程序间交互。它提供了命令行接口(CLI)来执行各种系统命令,使用户能够高效地...

    shell编程学习文档

    Shell学习的好帮手Shell学习的好帮手Shell学习的好帮手Shell学习的好帮手Shell学习的好帮手

Global site tag (gtag.js) - Google Analytics