文本三剑客之sed

我们知道,sed被称为Linux中被称为文本处理三剑客之一,相比于grep命令匹配内容的功能,sed则能够做到对匹配到的文本内容对其进行编辑。

timg_image&quality=80&size=b9999_10000&sec=1524382148&di=60ed062083583003b69f3b1

强大的处理文本的工具sed

我们知道,sed被称为Linux中被称为文本处理三剑客之一,相比于grep命令匹配内容的功能,sed则能够做到对匹配到的文本内容对其进行编辑。

Linux文本处理三剑客:

grep:文本过滤工具(传送门)

sed:文本编辑工具

awk:Linux上的实现gawk,文本报告生成器(传送门)

 

sed,英文全称Stream EDitor,翻译过来就是行编辑器。

用法:

sed[option]…’script’ inputfile…

其中‘script’可表示为’地址定界+编辑命令’

option:

-n  取消默认打印内容到屏幕(示例1)

-e     多点编辑,表达且关系,与grep的-e不同,grep -e表达或关系(示例2)

-f      从指定文件中读取编辑脚本(示例3)

-r      支持使用扩展正则表达式

-i.bak       原处编辑,并备份文件file.bak(示例4)

 

地址定界:

(1)不给地址:对全文进行处理

(2)单地址:

#:指定的行,$:最后一行

/pattern/:支持正则表达式,被此模式所能匹配到的每一行

(3)地址范围:

#,#                         (示例5)

#,+#

/pat1/,/pat2/          (示例6)

/pat1/, #                  (示例7)

(4)~:步进

1~2  奇数行              (示例5)

2~2  偶数行

 

 

编辑命令:

d       删除模式空间匹配的行(示例4)

p       打印当前模式空间内容,追加到默认输出之后(示例1)

a[\]text   在指定行后面追加文本(示例4)

如要实现插入内容空格开头可先追加\再输入空格

支持使用\n实现多行追加(示例8)

i[\]text     在指定行前面插入文本(示例9)

c[\]text    替换指定行尾单行或多行文本(示例10)

w /path/somefile   保存模式匹配的行到指定文件(示例11)

r /path/somefile     读取指定文件的文本匹配的行后(示例12)

注意:w,r后跟文件一定要加空格

可利用此命令定义别名到.bashrc

=       为模式空间中的行打印行号

!    取反,!需加载地址定界和编辑命令中间,如’2!d’(示例13)

 

s///:查找替换,支持使用其他分隔符;s###;s@@@(示例14)

 

示例

以下我们创建文件test进行示例:

创建文件test

 

示例1:sed   ‘1,10p’ /data/test.sed

sed命令默认将文本内容打印到屏幕,由于执行命令p,文本内容被打印了两遍

不加-n

sed  -n  ‘1,10p’ /data/test.sed

sed   -n选项将取消默认输出到屏幕,仅显示p的执行结果

加-n

示例2:sed -n -e ‘1p’  -e  ‘3p’

显示第一行和第三行,-e表示且的关系

-e

示例3:sed -n -f sedscripts.txt  /data/test.sed

将2,5p写入sedscripts.txt文件,-f选项读取sedscripts.txt,并执行文件中内容

-f 引用文件

示例4:sed -i  ‘1,10a#’   /data/test.sed

表示在第1至第10行内容后插入#,-i选项直接编辑了test.sed的文本内容

-i a

sed -i  ‘/#/d’  /data/test.sed

表示将所有带#的行删掉并编辑文本

-i d

示例5:sed -n  ‘3p’     打印第3行内容

sed  -n ‘2,5p’                打印第2至第五行

sed  -n ‘2,+3p’              打印第2至第5行

sed  -n  ‘1~2p’              打印奇数行

sed  -n  ‘2~2p’              打印偶数行

数字定界

示例6:正则定界,表示ifconfig命令输出中开头eth2的行,至开头为lo的行

正则定界

示例7:正则数字混合定界,表示ifconfig命令输出中,eth2开头的行到第12行的内容

正则数字混合定界

示例8:多行插入,将aaa\nbbb插入到每行后面

a多行

示例9:sed  ‘1,10i#’  /data/test.sed

在每一行上面插入#

i上方插入

示例10:sed  ‘1,5c’  /data/test.sed

将test.sed文件中1到5行替换为一个#

c替换匹配

示例11:sed  ‘2,5w  f1’  /data/test.sed

将test.sed文件中第2到第5行内容打印到f1文件中

w 将匹配内容输出到指定文件

示例12:sed  ‘2,5r  f1’  /data/test.sed

将f1的内容插入到第2至第5行

r 跟文件写入匹配行

示例13:sed  -n  ‘2,5!  p’  /data/test.sed

打印除了第2至第5行的内容

!除了

示例14:ifconfig |sed -n “2p”|sed -r “s@.*addr:(.*) Bcast.*@\1@”

利用搜索替代,我们可以将任意段字符串定义成方法,然后表示出整行,再利用后向引用即可取出该字符串。

正则取IP

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96023

赞 (0)
wangxczwangxcz
上一篇 2018-04-15 14:39
下一篇 2018-04-15 15:09

相关推荐

  • 计算机原理与Linux基础

    计算机的组成及功能 1、其实计算机的组织分为内部设备和外部设备, 内部设备:         CPU:运算器、寄存器、缓存         存储器:内存,RAM(Random Access Memory)         控制器:控制器是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证计算机按照预先规定的目标和步骤有条不紊地进行操作及处理。 外部…

    Linux笔记 2018-05-13
  • https网络安全协议

    HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

    2018-06-22
  • 笔记整理-软件包管理

      管理包工具: rpm  集包与工具于一身的管理器 获取途径: https://www.centos.org/download/ http://mirrors.aliyun.com http://mirrors.sohu.com http://mirrors.163.com   常见包的文件名组成: zlib -3.0-11.e17.x…

    Linux笔记 2018-04-22
  • grep与vim工具基本命令详解

    本文记录了些我在学习grep与vim时记录的一些笔记,希望可以帮到大家

    2018-04-06
  • 关于shell脚本编程的基础知识理解介绍

    shell:     Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 shell脚本:是一种为shell编写的脚本程序,其编辑风格可以分为过程式和对象式。 过程式:是以指令为中心且数据服务于指令。 对象式:是以数据为中心且指令服务于数据。 shell基本编程概念和环境: She…

    2018-04-16
  • 在VM中安装CentOS6.10

    CenOS6.10详细安装过程,用于课堂笔记

    2018-07-19