输入文件不会被修改,sed 只在模式空间中执行替换命令,然后输出模式空间的
内容。
文本文件 employee.txt

101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager

1.用 Director 替换所有行中的 Manager

替换命令用到参数s 注意代码格式

[root@localhost /]# sed 's/Manager/Director/' employee.txt
101,John Doe,CEO
102,Jason Smith,IT Director
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Director

2.只把包含 Sales 的行中的 Manager 替换为 Director

[root@localhost /]# sed '/Sales/s/Manager/Director/' employee.txt
101,John Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Director

3.全局标志 g

用大写 A 替换第一次出现的小写字母 a

[root@localhost /]# sed 's/a/A/' employee.txt
101,John Doe,CEO
102,JAson Smith,IT Manager
103,RAj Reddy,Sysadmin
104,AnAnd Ram,Developer
105,JAne Miller,Sales Manager

把所有小写字母 a 替换为大写字母 A

[root@localhost /]# sed 's/a/A/g' employee.txt
101,John Doe,CEO
102,JAson Smith,IT MAnAger
103,RAj Reddy,SysAdmin
104,AnAnd RAm,Developer
105,JAne Miller,SAles MAnAger

4.数字标志

把第二次出现的小写字母 a 替换为大写字母 A

[root@localhost /]# sed 's/a/A/2' employee.txt
101,John Doe,CEO
102,Jason Smith,IT MAnager
103,Raj Reddy,SysAdmin
104,Anand RAm,Developer
105,Jane Miller,SAles Manager

建立一下文件

vi substitute-locate.txt
locate command is used to locate files
locate command uses database to locate files
locate command can also use regex for searching

用刚才建立的文件,把每行中第二次出现的 locate 替换为 find

[root@localhost /]# sed 's/locate/find/2' substitute-locate.txt
locate command is used to find files
locate command uses database to find files
locate command can also use regex for searching

5.打印标志 p

只打印替换后的行

[root@localhost /]# sed -n 's/John/johnny/p' employee.txt
101,johnny Doe,CEO

把每行中第二次出现的 locate 替换为 find 并打印出来

[root@localhost /]# sed -n 's/locate/find/2p' substitute-locate.txt
locate command is used to find files
locate command uses database to find files

6.写标志w

标志 w 代表 write,当替换操作执行成功后,它把替换后的结果保存的文件。
把每行出现的 John 替换为 Johnny,只把替换后的内容写到 output.txt 中

[root@localhost /]# sed -n 's/John/Johnny/w output.txt' employee.txt
[root@localhost /]# cat output.txt
101,Johnny Doe,CEO

把每行第二次出现的 locate 替换为 find,把替换的结果保存到文件中,同时显示输入文件所有内容

[root@localhost /]# sed 's/locate/find/2w output.txt' substitute-locate.txt
locate command is used to find files
locate command uses database to find files
locate command can also use regex for searching
[root@localhost /]# cat output.txt
locate command is used to find files
locate command uses database to find files

7.忽略大小写标志 i

把 john 或 John 替换为 Johnny,但是文件中的John中的J是大写,所以用i参数忽略大小写

[root@localhost /]# sed 's/john/Johnny/i' employee.txt
101,Johnny Doe,CEO
102,Jason Smith,IT Manager
103,Raj Reddy,Sysadmin
104,Anand Ram,Developer
105,Jane Miller,Sales Manager

8.执行命令标志 e

如下图所示,e参数就是执行的作用 文本文件ls -l /etc/passwd e参数则是执行这条命令

[root@localhost /]# vi /files.txt
[root@localhost /]# cat /files.txt
/etc/passwd
/etc/group
[root@localhost /]# sed 's/^/ls -l/' files.txt
ls -l/etc/passwd
ls -l/etc/group
[root@localhost /]# sed 's/^/ls -l /e' files.txt
-rw-r--r--. 1 root root 1766 10月 24 15:15 /etc/passwd
-rw-r--r--. 1 root root 920 10月 24 15:15 /etc/group

给特定行加注释或者删除注释

[root@VM-0-13-centos home]# cat test
locate command is used to locate files
locate command uses database to locate files
locate command can also use regex for searching #  &符号表示替换字符串中被找到的部分, 这条命令是替换以locate开头的所有行
[root@VM-0-13-centos home]# sed 's/^locate/#&' test
sed: -e expression #1, char 12: unterminated `s' command
[root@VM-0-13-centos home]# sed 's/^locate/#&/' test
#locate command is used to locate files
#locate command uses database to locate files
#locate command can also use regex for searching # locate被标记为1 ,\1就是复制这个位置的内容  如果有 第二个 那么久\2就是复制第二个位置的内容

[root@VM-0-13-centos home]# sed 's!^#\(locate\)!\1!' test
locate command is used to locate files
locate command uses database to locate files
locate command can also use regex for searching
[root@VM-0-13-centos home]#

  

sed 替换命令 s 后面的三个分隔符可以指定为其他符号,不一定都要是"/",可以用 “|” ,“!”,“#” 等来分隔。

    sed -i '/pam_wheel.so use\_uid/ s|^#\(.*\)$|\1|' /etc/pam.d/su  #先模式匹配找到行,再用s替换掉注释

sed 添加注释和取消注释的简单例子

[root@localhost yum.repos.d]# cat Local.repo
[Local]
name=localyum
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
[root@localhost yum.repos.d]# sed -n 's/^en/#en/p' Local.repo           #这行是找到以en开头的行,替换en为#en
#enabled=1

 [root@localhost yum.repos.d]# sed -n 's/^#en/en/p' Local.repo           #这个同理取消注释
  enabled=1

参考链接:https://blog.csdn.net/weixin_43150761/article/details/83152456

sed 替换命令使用的更多相关文章

  1. sed替换命令

    sed替换命令 语法为: sed ' [ address-range | pattern-range ] s/original-string/replacement-string/[substitut ...

  2. linux:vi 替换命令

    转自:http://www.cnblogs.com/afant/archive/2009/03/11/1408745.html :s/^.*$/\L&/100 ##将100行内的小写转换成大写 ...

  3. vim替换命令

    转载:http://blog.csdn.net/glorin/article/details/6317098 替換(substitute) :[range]s/pattern/string/[c,e, ...

  4. VIM中的正则表达式及替换命令

    VIM中的正则表达式及替换命令 一.使用正则表达式的命令 使用正则表达式的命令最常见的就是 / (搜索)命令.其格式如下: /正则表达式 另一个很有用的命令就是 :s(替换)命令,将第一个//之间的正 ...

  5. sed高级命令

    所谓高级,主要是指这里将要提到的命令都能改变sed执行或者控制的流程顺序(sed通常都是一行被读入模式空间,并用脚本中的sed命令一个接一个的应用于那一行). 高级sed命令分成3个组: 1)处理多行 ...

  6. vi 替换命令“找不到模式”解决

    在linux vi编辑工具中使用替换命令操作时,会出现明明有匹配查找模式的数据.却报"找不到模式"问题. 原因是vi s///替换操作缺省针对行,若要生效,则须要将光标移动到指定行 ...

  7. 【转】vim替换命令

    vim替换命令 free:此文后面涉及了正则表达式,随便看了一下,觉得正则表达式有时间学一学对于在Linux下操作也是方便许多 替換(substitute) :[range]s/pattern/str ...

  8. Linux替换命令

    :s/^.*$/\L&/100 ##将100行内的小写转换成大写 vi/vim 中可以使用 :s 命令来替换字符串. :s/vivian/sky/ 替换当前行第一个 vivian 为 sky ...

  9. 【转】sed单行命令大全

    文本间隔:  # 在每一行后面增加一空行  sed G # 将原来的所有空行删除并在每一行后面增加一空行.  # 这样在输出的文本中每一行后面将有且只有一空行.  sed '/^$/d;G' # 在每 ...

随机推荐

  1. Vue组件封装之无限滚动列表

    无限滚动列表:分为单步滚动和循环滚动两种方式 <template> <div class="box" :style="{width:widthX,hei ...

  2. Java面向对象系列(12)- Static关键字讲解

    场景一:静态变量 package oop.demo07; public class Student { private static int age;//静态的变量 一般多线程用的比较多 privat ...

  3. SVN--代码状态检查(图文并茂)

    接下来,我们用客户端去检出代码,在桌面空白处单击右键,选择SVN检出(check out),在弹出的对话框中填写版本库URL(具体获取方式,上面讲上传项目到版本库的时候讲过),选择检出目录,点击确定. ...

  4. xLua中C#调用Lua

    C#调用Lua 一.前提 这里使用的是XLua框架,需要提前配置xlua,设置加载器路径: 可以参考之前的Blog:<xlua入门基础>: 二.C#调用Lua全局变量 lua中所有的全局变 ...

  5. xLua中Lua调用C#

    xLua中Lua调用C# 1.前提 这里使用的是XLua框架,需要提前配置xlua,设置加载器路径: 可以参考之前的Blog:<xlua入门基础>: //调用段,所有的lua代码都写在Lu ...

  6. 人力节省 50%,研发效能提升 40%,阿里 Serverless 架构落地实践

    作者 | 万佳 嘉宾 | 杨皓然(不瞋) 导读:云的下一波浪潮是什么?杨皓然称"是 Serverless".作为一名阿里老兵,他早在 2010 年即加入阿里云,曾深度参与阿里云飞天 ...

  7. 洛谷2543AHOI2005]航线规划 (树剖+线段树+割边思路)

    这个题的思路还是比较巧妙的. 首先,我们发现操作只有删除和询问两种,而删除并不好维护连通性和割边之类的信息. 所以我们不妨像WC2006水管局长那样,将询问离线,然后把操作转化成加边和询问. 然后,我 ...

  8. FastAPI 学习之路(二十)接口文档配置相关

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  9. JavaScript兼容性汇总

    一般兼容性问都体现到DOM和事件上 ​ 只聊ie6+版本浏览器,希望小伙伴们别纠结更低版本浏览器哈^_^ DOM 获取元素 document.getElementsByclassName 不兼容ie6 ...

  10. CentOS 压缩解压

    目录 命令 tar gzip.gunzip bzip2.bunzip2 zip.unzip 命令组合 打包:将多个文件合成一个总的文件,这个总的文件通常称为"归档". 压缩:将一个 ...