现在的位置: 首页 > 综合 > 正文

sed 命令 用法简介

2017年08月16日 ⁄ 综合 ⁄ 共 2443字 ⁄ 字号 评论关闭

 

 

替换命令

1. sed 一般被用来做字符替换,先从最简单的替换命令开始:
 
sed s/afei/yujian/  myfile.txt -------- 这条命令的意思是把myfile.txt里面的afei 替换为yujian.

注意:sed命令是按行替换,上面的语句严格来说是会用yujian替换 myfile.txt 文件里每一行的第一个afei.

模式空间   ——  保存当前输入行的一个临时缓冲器;

2.用sed 命令替换特定行的字符
sed 命令有两种方式来限定要替换的行
(1)正则表达式匹配行
 sed /sdu/s/afei/yujian/ myfile.txt -------这条命令用来将包含sdu字符行中的afei 替换为yujian.
(2)行号定义
 sed 1s/afei/yujian/ myfile.txt    -------这条命令用来第一行中的afei 替换为yujian.
 sed /as/,/b/s/afei/yujian/ myfile.txt --------- 这条命令中地址是取的范围表示第一个含有字符as的行和第一个含有字符b行
                                                之间的所有行(范围应该是[ ])。
注意:遇到地址范围匹配时我们可能有以下疑问
( 1).区间是闭区间还是开区间?
( 2).如果匹配到as(b)的行怎么办?
( 3).b的行在as的行之前?
测试结果表明:区间是闭区间,命令执行过程应该是首先匹配as如过匹配到,就开始执行替换,直到匹配到b或者是文件结束。

3.组合命令
 可以认为是用简化的方式执行多个相似的替换命令。
 (1)sed s/afei/yujian/ /
       s/zhangfei/cici/ myfile.txt -------反斜杠方式和shell中的|相似
 (2)sed 's/afei/yujian/ ;s/zhangfei/cici/' myfile.txt -------反斜杠方式和shell中的|相似

(3) 1,35{
       s/afei/yujian/
        s/zhangfei/cici/
       }
 config .date ----右大括号必须单独一行,一般是定义在一个文档里通过sed -f 命令执行。

4.可选标识符
 
-n 标识符(控制替换模式空间内的第几个匹配模式)

  sed ‘s/afei/yujian/2’ myfile.txt -------这条命令用来将文档中每一行出现的第二个afei 替换为yujian. 

  -g 标示符
  sed 'sed s/afei/yujian/g'  myfile.txt  ----------这条命令用来将文档中每一行出先的所有afei 替换为yujian. 

  -w 标示符
 sed 'sed s/afei/yujian/w myfile_new.txt'  myfile.txt  ----------这条命令用来将文档中每一行出先的第一个afei 替换为yujian
                                                                 并写入myfile_new.txt文件.  如果文件不存在会创建该文件,如果有
                                                                  会覆盖掉原来的内容(注意 文件名一定不要相同,否则你会拿到一个空  文件)

   -p 标示符
 
  sed 'sed s/afei/yujian/p'  myfile.txt  ----------这条命令用来将文档中每一行出先的所有afei 替换为yujian. 立刻显示

    5.特殊字符 (只应用在替换字符串)

   & -------代表模式项中被匹配的字符
 sed 'sed s/afei/&yujian/p'  myfile.txt  ----------这条命令用来将文档中每一行出先的所有afei 替换为afeiyujian

  /n --------代表模式中第 n 个 /( /)匹配的字符串
举例说明  文本 yutest 有一行数字“12 34”
 sed 's//([0-9][0-9]/) /([0-9][0-9]/)//2 /1/' yutest 执行后的结果就是 “34 12”

这里面 用 /( /)括起来的正则表达式[0-9][0-9] 代表一个两位的数字

  /     ------ 转义字符(跟其他语音中的转义字符相同,屏蔽特殊字符的特定含义)

 

删除命令

 命令格式【行定位地址】d

 sed /afei/d  myfile.txt  ----------这条命令用来将文档中包含afei的行,整行删除。

下面的几个命令,我在HPlinux 系统里 不能直接用命令行的方式运行,但是可以
写在脚本文件里执行(TMD)
注意一定要分两行执行 ,"/"就是一转义字符,转义回车。

-------------------
添加命令
 命令格式【行定位地址】a/
 文本

 sed '/afei/a/
 ddd' myfile.txt  ----------这条命令用来在文档中包含afei的行下插入一行ddd。

插入命令
 命令格式【行定位地址】i/
 文本
  sed '/afei/a/
 ddd' myfile.txt  ----------这条命令用来在文档中包含afei的行的上一行插入一行ddd。

行替换命令
 命令格式【行定位地址】c/
 文本
  sed '/afei/a/
 ddd' myfile.txt  ----------这条命令用来在文档中包含afei的行替换成ddd。

替换命令可以用行范围限定:
  sed '1,3/afei/a/
 ddd' myfile.txt  ----------这条命令用来在文档中1,3行包含afei的行替换成 ddd(有可能是3行替换成一行)。

文本插入命令

sed '/aa/r yutest' yu   ------这条命令用来使得文件yu在包含“aa”的每一行下插入文本yutest包含的内容。

 

 

抱歉!评论已关闭.