Chinaunix首页 | 论坛 | 博客
  • 博客访问: 313687
  • 博文数量: 29
  • 博客积分: 698
  • 博客等级: 上士
  • 技术积分: 293
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-11 11:14
文章分类

全部博文(29)

文章存档

2013年(2)

2012年(5)

2011年(22)

分类: LINUX

2011-04-25 21:58:49

    sed 是流编辑器,在处理大文件的时候在速度,执行效率上面较一般的交互式文本处理编辑器有明显的优势。 但须注意的是sed只对原文件的拷贝进行操作(使用-i 参数也可以将更改保存到原文件中,但是修改后无法恢复,所以一定要慎用该参数),且只记录在内存里面。如果相对所做的结果进行保存须重定向到一个新文本里面去。
   
    sed的基本命令格式:
       sed   [-n] [-e] ‘command’ file_name    #-e用在使用多个command的时侯,一般可省略
       sed   [-n]  -f   script.sh  file_name    #调用脚本
 
    sed的参数:
 
-n 不打印        【sed -n  '/oracle/p' /etc/passwd #只打印含有oracle的行(缺省为打印所有行)】
-f 指定脚本文件  【sed -n -f myscript.sh /etc/passwd #调用我的脚本对/etc/passwd进行处理】
-e 多命令执行    【sed -n '/oracle/p' -e /oracle/=' /etc/passwd #多命令时,必须添加-e】
 
    常用command:
p 打印匹配行     【sed -n ‘/oracle/p’ /etc/passwd】
= 显示文件行号   【sed -e ‘/oracle/=' /etc/passwd
a\ 在定位行号后附加新文本信息 【sed -e '/oracle/p' -e  '/oracle/a\hello world!' /etc/passwd】
i\ 在定位行号后插入新文本信息 【sed -e '/oracle/p' -e  '/oracle/i\hello world!' /etc/passwd】
d 删除定位行                  【sed -e '/oracle/d' /etc/passwd】
c\ 用新文本替换定位行文本     【sed -n -e '/oracle/c\hello world!' /etc/passwd】
s 使用替换模式替换相应模式    【sed -e '/oracle/s/oracle/& user/g' /etc/passwd】
r 从另一个文件中读文本并追加  【sed -n -e  '/home/p/ -e '/home/ r test' /etc/passwd】 
w 写文本到一个文件            【sed -e '37,39w /etc/passwd.bak' /etc/passwd】
q 第一个模式匹配完成后退出或立即退出          【sed '/.oo.*/q' /etc/passwd】
l 显示与八进制A S C I I代码等价的控制字符     【sed '1,$l' /etc/passwd】
{ } 在定位行执行的命令组                      【sed '1{H;d};$G' /etc/passwd |sed '/^$/d'】
n 从另一个文件中读文本下一行,并附加在下一行  【】
g 将模式2粘贴到/pattern n/                    【sed '1{h;d};$G' /etc/passwd |sed '/^$/d'】
y 传送字符                                    【sed 'y/oracle/ora11g' /etc/passwd】
n 延续到下一输入行;允许跨行的模式匹配语句    【sed 'n;s/oracle11g/ora11g/' /etc/passwd】
挪动数据  【sed '1{H;d};$G' /etc/passwd |sed '/^$/d'】
合并数据  【awk 'NR==36,NR==39{print}' /etc/passwd |sed 'N;s/\n/\t/'】
==============================================================================================
PS.1. s替换语句 s/被替换部分/替换部分/g:有没有g的区别,有g是对全局进行操作,没有g只是对所有行的第一个匹配部分进行替换
ps.2  s替换语句的p参数要和 sed -n 选项组合用才有意义,且可以和数字连用,表示只打印第几个匹配的语句。  比如 "s/oralce11g/ora11g/2p /etc/passwd"
 
阅读(774) | 评论(0) | 转发(1) |
0

上一篇:oracle---select语句

下一篇:shell趣味小脚本

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