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 默认是全局透视寻址.
正则必须封闭在//中
$在正则中表示行尾,在sed中表示最后一行。/^$/正则中还是表示一行的结尾。
地址有两人种:行地址与模式地址
地址也可以是两个正则表示:/正则/,/正则/命令
感叹号!加在地址后操作命令前用于反转操作
/正则/,/正则/!命令
分组操作
地址与命令可以使用{}进行分组操作。
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
删除操作d
/regular/,/regular/command
插入操作i,追加操作a(不可处理一个范围)
/regular/command\
内容
插入与追加操作不影响模式空间,即模式空间的行计数不变.
修改操作c(可处理一个范围)
/regular/,/regular/command\
内容
当修改操作作用于一封闭大括号并作用于一个范围时,将产生相同于范围行数的输出.
列表(l)
用于显示模式空间的内容,包括不可见字符
转换(y)
[address]y/abc/xyz/
打印(p)
打印命令不同于替换命令中的p,后者是以成功替换为条件的.
下一步(next):n
较难理解,待深入学习
在执行next后,控制将被传递给后序命令.
读写文件
[line-address]r file
[address]w file
[line-address]是要操作的文件行号,将file的内容追加到指定行号之后.
sed的高级命令:
多行模式空间 PDN
阅读(2021) | 评论(0) | 转发(1) |