sed

简介: sed: 非交互,不可逆转    应用每行,作用全局 vi   : 交互,直观 sed命令行选项=========================== 简单命令:sed -e 脚本文件:sed -f 阻止自动输出,指令操作行执行打印命令p:sed -n ====================================== sed对操作的文件的一行依次执行脚本中的命令,对一行执行所有命令后再对操作文件的下一行操作。
sed: 非交互,不可逆转    应用每行,作用全局
vi   : 交互,直观

sed命令行选项===========================
简单命令:sed -e
脚本文件:sed -f
阻止自动输出,指令操作行执行打印命令p:sed -n
======================================
sed对操作的文件的一行依次执行脚本中的命令,对一行执行所有命令后再对操作文件的下一行操作。一个命令的结果会成为下一条命令的输入。即sed总是在处理原始行的最新形式。
如下面的例子
[talenhao@BJB0300 tmp]$ touch 1.txt
[talenhao@BJB0300 tmp]$ echo a> 1.txt 
[talenhao@BJB0300 tmp]$ touch sed 
[talenhao@BJB0300 tmp]$ vim sed
[talenhao@BJB0300 tmp]$ sed -f sed 1.txt 
c

模式空间:sed操作缓冲区 前一个命令的处理结果会做为后一个命令的处理内容.
sed 默认是全局透视寻址.

img_75ce7186848ce5f67fd4c64f42be8439.png
正则必须封闭在//中
$在正则中表示行尾,在sed中表示最后一行。/^$/正则中还是表示一行的结尾。
地址有两人种:行地址与模式地址
地址也可以是两个正则表示:/正则/,/正则/命令
img_d3d80decc14c6ab93a7fcaccffdd56e0.png
感叹号!加在地址后操作命令前用于反转操作
/正则/,/正则/!命令

分组操作
地址与命令可以使用{}进行分组操作。
img_f84a07f383f38301b1e5667abcc6e35f.png

sed命令集有25个命令,常用的编辑命令有4个(caid),d(删除),a(追加),i(插入),c(修改)。

地址命令
[address]command
[line-address]command
address{
  command
  [address]command
  ...
}
address{command; command;command;...
}


替换操作:s
    [address]s/pattren/replacement/flags
img_b00c4ddf4ed122803d2113cacc22d475.png
删除操作d
/regular/,/regular/command
插入操作i,追加操作a(不可处理一个范围)
/regular/command\
内容
       插入与追加操作不影响模式空间,即模式空间的行计数不变.
修改操作c(可处理一个范围)
/regular/,/regular/command\
内容
        当修改操作作用于一封闭大括号并作用于一个范围时,将产生相同于范围行数的输出.
img_69893ff4af19112402f904edb2f887d1.png
列表(l)
        用于显示模式空间的内容,包括不可见字符
转换(y)
        [address]y/abc/xyz/
打印(p)
        打印命令不同于替换命令中的p,后者是以成功替换为条件的.
下一步(next):n
        较难理解,待深入学习

    在执行next后,控制将被传递给后序命令.
读写文件
        [line-address]r file
        [address]w file
    [line-address]是要操作的文件行号,将file的内容追加到指定行号之后.

sed的高级命令:
        多行模式空间 PDN
目录
相关文章
|
2月前
|
Unix Windows Perl
sed具体的介绍
sed具体的介绍
14 2
|
5月前
|
Perl
Sed使用总结
Sed使用总结
21 0
|
人工智能 移动开发 Unix
三剑客之 sed
三剑客之 sed
|
移动开发 开发工具 Perl
|
JavaScript Java Shell
|
JavaScript Java Shell
|
机器学习/深度学习 Unix Shell