shell sed(流编辑器)的基本使用

Posted xiaojin21cen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell sed(流编辑器)的基本使用相关的知识,希望对你有一定的参考价值。

sed 是一种 编辑器,它一次处理一行内容。
处理时,把当前处理的行存储在 临时缓冲区 中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕 。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

1、基本用法

sed [options 选项]  'command命令'  filename

options 选项 说明:

options 参数功能
-e连续执行多个sed指令

脚本command命令 说明 :

命令功能描述
a新增。a的后面可以接字串,在下一行出现
d删除
s查找并替换

sed 匹配字符集

  • ^ :匹配行开始,如:/^sed/ 匹配所有以 sed 开头的行。
  • $ :匹配行结束,如:/sed$/ 匹配所有以 sed 结尾的行。
  • . :匹配 一个 非换行符的任意字符,如:/s.d/ 匹配 s 后接一个任意字符,最后是 d 。
  • * :匹配0个或多个字符,如:/*sed/ 匹配所有模板是一个或多个空格后紧跟sed的行。

2、案例实操

(0)数据准备

[java@localhost java_demo]$ touch sed.txt
[java@localhost java_demo]$ vim sed.txt
dong shen
guan zhen
wo  wo
lai  lai

le  le

(1)将 mei nv 这个单词插入到 sed.txt 第2行下面 ,打印。

插入的命令参数 a ,插入到第2行使用 2a,具体如下:

[java@localhost java_demo]$ sed '2a mei nv' sed.txt 
dong shen
guan zhen
mei nv
wo  wo
lai  lai

le  le

sed.txt 文件并没有改变,如下:

[java@localhost java_demo]$ cat sed.txt 
dong shen
guan zhen
wo  wo
lai  lai

le  le

(2)删除 sed.txt 文件所有包含 wo 的行

删除的命令参数 d ,所有包含 wo ,则是/wo/ ,综合使用如下:

[java@localhost java_demo]$ sed '/wo/d' sed.txt
dong shen
guan zhen
lai  lai

le  le

(3)将 sed.txt 文件中 wo 替换为 ni

替换的命令参数 s ,wo 替换为 ni 的命令是 s/wo/ni/g ,综合使用如下:

[java@localhost java_demo]$ sed 's/wo/ni/g' sed.txt 
dong shen
guan zhen
ni  ni
lai  lai

le  le

注意: g 表示 global ,全部替换。

(4)将 sed.txt 文件中的第2行删除, 并将 wo 替换为 ni

[java@localhost java_demo]$ cat sed.txt    # 原始数据
dong shen
guan zhen
wo  wo
lai  lai

le  le
[java@localhost java_demo]$ sed -e '2d' -e 's/wo/ni/g' sed.txt    # 操作后的数据(说明 sed.txt 内容未改变)
dong shen
ni  ni
lai  lai

le  le

以上是关于shell sed(流编辑器)的基本使用的主要内容,如果未能解决你的问题,请参考以下文章

Shell 基础 -- 流编辑器 sed 详解

shell脚本江湖秘籍只传有缘人——流编辑器“三剑客”之sed命令

shell脚本学习笔记 (流编辑器sed)

shell中的sed用法

shell工具-sed

Shell脚本 使用sed流编辑器一键修改CentOS网卡IP地址