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(流编辑器)的基本使用的主要内容,如果未能解决你的问题,请参考以下文章