当前位置: > shell编程 >

sed命令初试

时间:2015-10-10 12:40来源:linux.it.net.cn 作者:IT

目录[-]

  • 1、sed用法介绍
  • 2、保存sed输出
  • 3、使用sed在文件中查询文本的方式
  •  4. 测试

1、sed用法介绍



sed是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝。


使用sed需要记住的一个事实是,无论命令是什么,sed并不与初始化文件打交道,它操作的只是一个拷贝,然后所有的改动如果没有重定向到一个文件,将输出到屏幕。


因为sed是一个非交互性编辑器,必须通过行号或正则表达式指定要改变的文本行。

1)、sed怎样读取数据


从文件的一个文本行或从标准输入的几种格式中读取数据,将之复制到一个编辑缓冲区,然后读命令行或脚本的第一条命令,并使用这些命令查找模式多定位行号编辑它。重复此过程,直到命令结束。


2)、调用sed


三种方式:


在命令行中输入命令;


将sed命令插入脚本文件,然后调用sed;


将sed命令插入脚本文件,并使sed脚本可执行。


 


使用sed命令行的格式为:


sed[选项] sed命令输入文件


注意:在命令行使用sed命令时,实际命令要加单引号,sed也允许加双引号。


使用sed脚本文件的格式为:


 


sed[选项] -f sed 脚本文件输入文件


 


要使用第一行具有sed命令解释器的sed脚本文件,其格式为:


sed 脚本文件[选项] 输入文件


 


3)、sed命令的选项


n:不打印,sed不写编辑行到标准输出,默认为打印所有行。p命令可以用来打印编辑行。


c:下一命令是编辑命令


f:如果正在调用sed脚本文件,则使用此选项。此选项通知sed一个脚本文件支持所有的sed命令,


例如 sed -f myscirpt.sed input_file 。这里myscript.sed即为支持sed命令的文件。


 

 

2、保存sed输出



由于不接触初始化文件,如果想要保存改动内容,简单地将所有输出重定向到一个文件即可。


$sed 'some-sed-commands' input-file > myoutfile


 


3、使用sed在文件中查询文本的方式



 


sed浏览输入文件时,默认从第一行开始,有两种方式定位文本:

 

 




1)使用行号,可以是一个简单数字或一个行号范围


2)使用正则表达式

一些编辑命令



P:打印匹配行


=:显示文件行号


a/:在定位行号后附加新文本信息


i/:在定位行号后插入新文本信息


d:删除定位行


c/:用新文本替换定位文本


s:使用替换模式替换相应模式


r:从另一个文件中读文本


w:写文本到一个文件


q:第一个模式匹配完后退出或立即推出、


l:显示与八进制ASCII代码等价的控制字符


{}:在定位行执行的命令组


n:从另一个文件中读文本下一行,并附加在下一行


g:将模式2粘贴到/pattern n/


y:传送字符


n:延续到下一输入行;允许跨行的模式匹配语句sed和正则表达式
 

 4. 测试

 

 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function removeLineForAssert(){
       #$1  pattern to delete        #$2  file name        if [ -f  ${CURL_LOG_DIRECTORY}/$2.resp ];then
          sed  /$1/d  ${CURL_LOG_DIRECTORY}/$2.resp >${CURL_LOG_DIRECTORY}/new.txt
          if [ -f ${CURL_LOG_DIRECTORY}/new.txt ];then
                rm  -r ${CURL_LOG_DIRECTORY}/$2.resp
                mv  ${CURL_LOG_DIRECTORY}/new.txt  ${CURL_LOG_DIRECTORY}/$2.resp
          else
             echo "Failed to remove line from $2 to assert!"
          fi
  
       else
  
          echo "Invalid input file!"
  
       fi
}

 

 

删除某行,支持regex,语法如下

 

sed  /duration/d  test.txt>>new.txt

sed  /pattern/d  filename >>重定向

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容