文本三剑客之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)
上一篇 2018-04-15 14:39
下一篇 2018-04-15 15:09

相关推荐

  • Linux发行版的基础目录

    Linux发行版的基础目录名称命名法则及功用规定: FHS:Linux目录配置文件的依据         FHS的重點在于规范每个特定的目录下要放置什么样子的资料 FHS要求必須要存在的目录:/bin:在单人维护模式下还能操作的文档/boot:主要放置开机时會使用到的档案/dev:在Linux中,任何裝置与周边设备都是以档案的形态存在這個目录中的。/etc:…

    Linux笔记 2018-06-24
  • Linux安全和加解密(一)

    本文主要介绍:1、安全机制 2、对称和非对称加密 3、散列算法 4、密钥交换 5、加密工具gpg 6、CA和证书

    2018-05-28
  • 学习笔记(9)

    学习笔记(9)

    Linux笔记 2018-04-22
  • 计算机扫盲闲谈—番外篇(基础知识补充)

    Ken Thompson:一切为了游戏。没错就是为了玩这款为Multics系统开发的游戏“star travel”他编写了一套简化的系统——Unix

    2018-03-27
  • vim编辑器

    文本编辑器种类: 行编辑器:sed 全屏编辑器:nano,vi vim编辑器 vi文本编辑器 +#打开文件后让光标处于第#行 +/ PATTERN :打开文件后,直接让光标处于第一个被 PATTERN 匹配到的行的 行首 –b file 二进制方式打开文件 –d file1 file2… 比较多个文件 -m file 只读打开文件 三种模式: 命令h,j,k…

    2018-04-06
  • shell 脚本进阶 ,启动流程和故障排错

    shell 脚本进阶 ,启动流程和故障排错

    2018-05-06