sed 替换命令使用
输入文件不会被修改,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 替换命令使用的更多相关文章
- sed替换命令
sed替换命令 语法为: sed ' [ address-range | pattern-range ] s/original-string/replacement-string/[substitut ...
- linux:vi 替换命令
转自:http://www.cnblogs.com/afant/archive/2009/03/11/1408745.html :s/^.*$/\L&/100 ##将100行内的小写转换成大写 ...
- vim替换命令
转载:http://blog.csdn.net/glorin/article/details/6317098 替換(substitute) :[range]s/pattern/string/[c,e, ...
- VIM中的正则表达式及替换命令
VIM中的正则表达式及替换命令 一.使用正则表达式的命令 使用正则表达式的命令最常见的就是 / (搜索)命令.其格式如下: /正则表达式 另一个很有用的命令就是 :s(替换)命令,将第一个//之间的正 ...
- sed高级命令
所谓高级,主要是指这里将要提到的命令都能改变sed执行或者控制的流程顺序(sed通常都是一行被读入模式空间,并用脚本中的sed命令一个接一个的应用于那一行). 高级sed命令分成3个组: 1)处理多行 ...
- vi 替换命令“找不到模式”解决
在linux vi编辑工具中使用替换命令操作时,会出现明明有匹配查找模式的数据.却报"找不到模式"问题. 原因是vi s///替换操作缺省针对行,若要生效,则须要将光标移动到指定行 ...
- 【转】vim替换命令
vim替换命令 free:此文后面涉及了正则表达式,随便看了一下,觉得正则表达式有时间学一学对于在Linux下操作也是方便许多 替換(substitute) :[range]s/pattern/str ...
- Linux替换命令
:s/^.*$/\L&/100 ##将100行内的小写转换成大写 vi/vim 中可以使用 :s 命令来替换字符串. :s/vivian/sky/ 替换当前行第一个 vivian 为 sky ...
- 【转】sed单行命令大全
文本间隔: # 在每一行后面增加一空行 sed G # 将原来的所有空行删除并在每一行后面增加一空行. # 这样在输出的文本中每一行后面将有且只有一空行. sed '/^$/d;G' # 在每 ...
随机推荐
- Nginx系列(8)- Nginx安装 | Docker环境下部署
Docker环境下部署Nginx https://www.cnblogs.com/gltou/p/15186971.html
- Kafka 3.0新特性
1.概述 Kafka是一个分布表示实时数据流平台,可独立部署在单台服务器上,也可部署在多台服务器上构成集群.它提供了发布与订阅的功能,用户可以发送数据到Kafka集群中,也可以从Kafka集群中读取数 ...
- phpstorm 配置Psr4 风格代码
http://www.cnblogs.com/xp796/p/6441700.html
- P4922-[MtOI2018]崩坏3?非酋之战!【dp】
正题 题目链接:https://www.luogu.com.cn/problem/P4922 题目大意 题目好长直接放了 在崩坏 3 中有一个叫做天命基地的地方,女武神们将在基地中开派对与敌人们厮杀. ...
- P4451-[国家集训队]整数的lqp拆分【生成函数,特征方程】
正题 题目链接:https://www.luogu.com.cn/problem/P4451 题目大意 给出\(n\),对于所有满足\(\sum_{i=1}^ma_i=n\)且\(\forall a_ ...
- python接口自动化--json解析神器jsonpath
前言 做接口测试的时候,大部分情况下返回的是json数据,我们需要对返回的json断言. 当返回的数据量比较大,并且嵌套的层级很深的时候,很多小伙伴不会取值,往往在返回结果取值上浪费很多时间.一直在寻 ...
- 【C++ Primer Plus】编程练习答案——第6章
1 void ch6_1() { 2 using namespace std; 3 char ch; 4 while ((ch = cin.get()) != '@') { 5 if (isdigit ...
- MD5加密算法的实现方式
MD5加密算法 MD5在我们平时项目中运用比较多,尤其是在用户注册的时候,密码存入数据库时可以利用MD5算法加密后存入,可以保证数据的安全性. 代码实现 public final class Md5U ...
- HTML对溢出的控制:overflow
用于对超出模块的内容进行控制 overflow的三种参数 1.visible(默认):溢出部分可见 2.hidden:溢出部分隐藏 3.auto:适当加入滚动条 overflow使用方法 1.常用 o ...
- 每日总结:Java课堂测试第三阶段第一次优化 (2021.9.20)
package jisuan2; import java.util.*;public class xiaoxue { public static void main(String[] args) { ...