Chinaunix首页 | 论坛 | 博客
  • 博客访问: 75166
  • 博文数量: 44
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 0
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-19 16:49
文章分类

全部博文(44)

文章存档

2018年(2)

2017年(1)

2016年(41)

我的朋友
sed

分类: LINUX

2016-04-29 17:23:32

原文地址: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 默认是全局透视寻址.

正则必须封闭在//中
$在正则中表示行尾,在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
阅读(803) | 评论(0) | 转发(0) |
0

上一篇:awk

下一篇:tree命令中文显示为数字码

给主人留下些什么吧!~~