sed替换文本

[root@localhost.localdomain  home]#cat test
###   @2=1492785988 /* INT meta=0 nullable=0 is_null=0 */
###   @3=3598278656 /* LONGINT meta=0 nullable=0 is_null=0 */

  

要将test文件中@2=1492785988内容保留,首位的内容都去掉

 

[root@localhost.localdomain  home]#sed -i.bak '/^###/{s/^### *//;s#/\*.*\*/##;}' test

  

因为有特殊字符*,需要脱意,/\*.*\*/  这段的意思就是匹配/*  这里是正则.* 贪婪匹配   */   然后替换成空

这里最大的亮点是-i.bak 这个用法,以前一直只知道-i参数直接修改源文件,但-i.bak  可以备份

执行后,发现会多了一个test.bak备份文件

[root@localhost.localdomain  home]#ls
test  test.bak

  test.bak文件即为源文件

========================================

补充:

sed --help

-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)

 

发现参数,后面有[SUFFIX],表示后缀,即i.bak,支持备份文件

或者写成

sed --in-place=.bak '/^###/{s/^### *//;s#/\*.*\*/##;}' test

测试成功

posted @ 2017-06-14 14:42  陈浩然201  阅读(352)  评论(0编辑  收藏  举报