sed命令修改文本内容,可在脚本中使用

  在写Shell脚本的时候,有时候要替换、删除某个文件中的内容,但是又不方便用vim做交互的动作,这就可以用到『sed』命令来做批量的替换、插入、删除。

1、用法

sed [options] 'command' file(s)
 
# -f 将sed命令内容写在一个文件中,执行命令
sed -f scriptfile file(s)  
 
# -i 直接对文件原地修改
sed -i 'command' file(s) #// 默认sed只是通过内存临时修改文件,源文件无影响,加-i就会修改源文件,源文件内容会改变

2、常用选项(options):

  -n∶使用安静(silent)模式。默认sed会输出读取文档的全部内容。但如果加上 -n 参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来。
  -e∶多点编辑 让一条sed可以执行多条指令
  -f∶直接将 sed 的动作写在一个脚本文件内, -f filename 则可以执行 filename 内的sed动作;
  -r∶让sed支持扩展正则 若与其它选项一起使用,应放作为首选项
  -i∶直接修改读取的档案内容,而不是由屏幕输出。

3、常用命令(command):

  a∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
  c∶替换, c 的后面可以接字串,这些字串可以取代n1,n2 之间的行!
  d∶删除,因为是删除,所以 d后面通常不接任何内容
  i∶插入, i的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  p∶打印,就是将某个选择的资料显示。通常 p 会与参数 sed-n 一起运作
  s∶替换,可以直接进行替换!通常这个 s的动作可以搭配正则表达式。

4、部分示例:

  ①显示文件中的指定内容

    

   ②关键字模式查询

    

  ③删除文件中的内容

    

   ④对行进行插入

    

   ⑤对行进行替换

    

   ⑥对行模式匹配替换

    

     注意:如果内容遇到/等特殊字符,那么sed里用到的/可以用冒号:或者#或者&代替

    

    示例中把my.storageRoot=/storage 修改成 my.storageRoot=/home/storage。

  ⑦保存修改文件

     

    在Mac上执行上面有些命令可能会报错误,原因是mac强制要求备份,否则报错

    解决方案,留一个空备份'':

    

 

posted @   白菜没我白  阅读(840)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示