sed命令初试

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. 测试


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 >>重定向


转载于:https://my.oschina.net/hanruikai/blog/261608

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值