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

测试成功

原文地址:https://www.cnblogs.com/irockcode/p/7008777.html