Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4149
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 11
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-09 17:33
文章分类
文章存档

2015年(1)

我的朋友
最近访客

分类: LINUX

2015-05-09 17:43:10

sed是一个非交互式文本编辑器,sed从文本的一个文本行或标准输入中读取数据,将其复制到缓冲区,
然后读取命名行或脚本的第一个命令,对此名要求的行号进行编辑,重复此过程直到结束。
sed命令格式为:
sed [选项]    'sed命令'    输入文件
sed命令由定位文本和sed编辑命令两部分组成。
sed提供两种方式定位文本:
1,使用行号。                 
2,使用正则表达式。
sed编辑命令:
p           打印匹配行
=           打印文件行号
a\          在定位行号后追加文本信息
i\          在定位行号之前插入文本信息
d           删除定位行
c\          用新文本替换定位文本
s           使用替换模式替换相应模式
r           从另一个文本中读取文件
w           将文本写入另一个文件中
y           变换字符
q           第一个模式匹配后退出
l           显示与八进制ASCII等价的控制符
{}          在定位执行的命令组
n           读取下一行,用下一的命令处理新的行
h           将模式缓冲区的文本复制到保持缓冲区
H           将模式缓冲区的文本追加到保持缓冲区
x           互换模式缓冲区和保持缓冲区的内容
g           将保持缓冲区的内容复制到模式缓冲区
G           将保持缓冲区的内容追加到模式缓冲区


sed编程命令选项的例子:
-n        取消sed的默认打印全部输出
[root@localhost lianxi]# sed -n '1p' output 
root:x:0:0:root:/root:/bin/bash
[root@localhost lianxi]# sed  '1p' output 
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
-e          向sed传递多个编辑命令
[root@localhost lianxi]# sed -n -e '/root/p' -e '/root/=' output 
root:x:0:0:root:/root:/bin/bash
1
operator:x:11:0:operator:/root:/sbin/nologin
2
注意sed不支持同时带多个编辑命令的用法,如:
[root@localhost lianxi]# sed -n -e '/root/p=' output 
sed:-e 表达式 #1,字符 8:extra characters after command
-f          只有调动sed脚本时才启用,如追加,插入,修改,删除,替换文本时才调用。
脚本:
#!/bin/sed -f
/root/a\"this is  new line"
调用:
[root@localhost lianxi]# ./sed.sh output 
root:x:0:0:root:/root:/bin/bash
"this is  new line"


sed文本定位的一组例子:
1.匹配元字符:使用"\"即可
2.$在sed名中表示最后一行
[root@localhost lianxi]# sed -n '$p' output 
operator:x:11:0:operator:/root:/sbin/nologin
tail命令也可以
[root@localhost lianxi]# tail -1 output 
operator:x:11:0:operator:/root:/sbin/nologin
3.!表示取反
[root@localhost lianxi]# sed -n '1!p' output 
operator:x:11:0:operator:/root:/sbin/nologin
4.使用行号与关键字匹配限定行范围
/pattern/,x 或 x,/pattern/


sed编辑命令的一组例子:
1.修改文本      c
sed         '指定位置 i\"text“ 输入文件
2.插入文本      i
sed         '指定位置 i\"text“ 输入文件
3.删除文本      d
指定位置  d
4.替换文本      s
s/被替换的/新的/[替换选项]
g:替换所有的(默认只替换第一个)
5.写入新文件
指定位置 w  文件名
6.读入新文件
指定位置 r  文件名
7.退出命令      q
8.变换命令      y
'y/原字符序列/新字符序列/'        输入文件
10.在定位执行组命令和-e选项的作用类似。
[root@localhost lianxi]# sed -n '/root/{p;=}' output 
root:x:0:0:root:/root:/bin/bash
1
operator:x:11:0:operator:/root:/sbin/nologin
2


sed高级编辑命令的一组例子:
1.处理匹配行的下一行
[root@localhost lianxi]# sed  '/^root/{n;s/operator/xixi/g;}'  output 
root:x:0:0:root:/root:/bin/bash
xixi:x:11:0:xixi:/root:/sbin/nologin
2.sed缓冲区的处理,sed有两种缓冲区,模式缓冲区(pattern buffer)和保持缓冲区(hold buffer)前面提及的是模式缓冲区。sed的一些命令可以对保持缓冲区的内容处理在和模式缓冲区进行兑换。有h,x,G这几个选项。


3.利用分号分隔多编辑命令,等价于用-e选项引出多个编辑命令。
[root@localhost lianxi]# sed 's/xixi/haha/;s/bash/ksh/' output 
root:x:0:0:root:/root:/bin/ksh
operator:x:11:0:operator:/root:/sbin/nologin

阅读(613) | 评论(0) | 转发(0) |
1

上一篇:没有了

下一篇:没有了

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