day14 linux三剑客之sed命令
day14 linux三剑客之sed命令
sed命令
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
sed(流式编辑器) : sed主要用来修改文件。
1、sed命令
sed [参数] "[定位][指令]" 处理的文本路径
注:不指定定位,则默认处理全文。
指令:
p : 打印文本
d : 删除文本
参数:
-e : 允许多项编辑
-n : 取消默认输出
-i : 就地编辑文本
-r : 支持扩展正则表达式(sed中的正则表达式必须放在两个//中间)
-f :指定定位规则的文件
案例1:打印第1行和第5行
[root@localhost ~]# sed -n -e '1p' -e "5p" 1.txt # p指令为打印文本,-n只打印匹配到的
案例2:在文本中,要求只打印第1,5,6三行
[root@localhost ~]# sed -n -e '1p' -e '5p' -e '6p' 1.txt
案例3:要求删除文件的第三行
[root@localhost ~]# sed -i '3d' 1.txt
案例4:删除/etc/nginx/nginx.conf文件中所有的注释的行
[root@localhost ~]# sed -i -r "/^ *#|^$/d" /etc/nginx/nginx.conf # 加上i会真的删除
5、删除1.txt的3行,打印第4行
[root@localhost ~]# vim 2.txt # 编辑文本
3d # 删除第3行
4p # 打印第4行
[root@localhost ~]# sed -f 2.txt 1.txt # -f参数,可以编辑文本,根据文本内容来执行相应的命令
6、要求将/etc/passwd文件复制到/root/1.txt中,然后删除当中包含/sbin/nologin的行
[root@localhost ~]# cat /etc/passed > 1.txt
[root@localhost ~]# sed -i "/\/sbin\/nologin/d" 1.txt # //是包含的意思,\是转义的意思
7、将/etc/nginx/nginx.conf文件中所有的注释的行(以#开头的行)全部删除
[root@localhost ~]# sed -i -r "/^ *#/d" /etc/nginx/nginx.conf
sed + 正则表达式(定位)
1、数字
1)、固定定位:[root@localhost ~]# sed -n '5p' 1.txt
2)、范围定位:[root@localhost ~]# sed -n '1,5p' 1.txt
2、正则:
正则表达式必须放在//之间,使用扩展正则前面不需加 -r参数
例子1:打印/etc/passwd文件中包含root的行
[root@localhost ~]# sed -n '/root/p' 1.txt # //:包含
例子2:将包含空格的行打印出来
[root@localhost ~]# sed -n -r "/ +/p" 1.txt # +:至少占一个或多个前导字符
3、数字加正则
正则匹配是非贪婪性的匹配
贪婪性 :贪婪性是匹配到了之后,不停继续匹配,直至文件所有的内容全部匹配完毕
费贪婪性 :非贪婪性匹配,一旦匹配到了就停止匹配
例子1:在/etc/passwd文件中的第一行,到包含test的行,全部删除
[root@localhost ~]# sed "1,/test/d" 1.txt # 从1到test行都删除,只留下test下面的
test01:x:1000:1000::/home/test01:/bin/bash
test02:x:993:994:简介:/home/test02:/bin/bash
例子2:删除从包含root的行到第5行的内容
[root@localhost ~]# sed -r "/root/,5p" 1.txt
例子3:从包含root的行删除到包含ftp的行
[root@localhost ~]# sed "/root/,/ftp/d" 1.txt
4、\c与c分隔符:也是转义的意思
\c与c只是一个代表,其中c可以换成任意一个字符
例子1:要求将/etc/passwd文件复制到/root/1.txt中,然后删除当中包含/sbin/nologin的行
[root@localhost ~]# cat /etc/passed > 1.txt
[root@localhost ~]# sed -i "/\/sbin\/nologin/d" 1.txt
还可以用这种方式做:
[root@localhost ~]# sed "\A/sbin/nologinAd" 1.txt # \A A :可以替换成任意字符,也是转义的意思
[root@localhost ~]# sed "\M/sbin/nologinMd" 1.txt # \M M :可以替换成任意字符,也是转义的意思
sed的常用指令
sed的常用命令
p :打印
d :删除
a :在当前后添加一行或者多行内容
c :用新文件修改(替换)当前行中的文本
i :在当前行之前插入文本
r :从外文件中读取相关内容,写到相关行之后
w :匹配到的行写入一个新的文件之中
y :将字符转换成一个新的字符
s :用一个字符替代整体替换成另外一个字符
g :全局执行
sgi :配合s指令配合一起使用i时,则是忽略大小的作用
sed常用指令的用法
案例1:在1.txt文本中第3行后添加nb
[root@localhost ~]# sed '3a nb' 1.txt # 使用的是a指令
案例2:用新的内容替换1.txt文本的内容
[root@localhost ~]# sed '2c meng' 1.txt # 使用的是c指令
案例3:在1.txt文本第3行内容之前插入新的内容
[root@localhost ~]# sed '3i my name is meng' 1.txt # 使用的是i指令
[root@localhost ~]# sed '1,3i my name is meng' .txt # 在范围1-3之前每行加新的内容
案例4:把1.txt内容添加到2.txt文本第3行后面
[root@localhost ~]# sed '3r 1.txt' 2.txt # 使用的是r命令,1.txt是读取内容,2.txt是需要添加的文件路径
案例5:把/etc/passwd/1-5行的内容写到新建的2.txt文件中
[root@localhost ~]# sed '1,5w 2.txt' /etc/passwd # 使用的是w指令,匹配到的行写入一个新的文件之中
案例6:将/etc/passwd中的sbin替换成1234
[root@localhost ~]# sed '1,5y/sbin/1234/' /etc/passwd # 但是有错误
root:x:0:0:root:/root:/234/2a1h
234:x:1:1:234:/234:/1234/4olog34
替换原理:是一个字符替换一个字符
s ---> 1
b ---> 2
i ---> 3
n ---> 4
案例7:用s指令可以解决将/etc/passwd中的sbin替换成1234的字符问题
[root@localhost ~]# sed 's/sbin/1234/' 1.txt # 整体替换一个字符
# s指令替换对于行来说,是非贪婪性,替换过一次就不会再替换,如果需要全局替换则需要使用 g 指令。
案例8:全局替换/etc/passwd中的sbin替换成1234
[root@localhost ~]# sed 's/sbin/1234/g' 1.txt # 注意:g指令只能添加到后面,不然会报错
案例9:把/etc/passwd中ROOT忽略大小写替换成1234
[root@localhost ~]# sed 's/ROOT/1234/gi' 1.txt # 只有配合s g指令,i指令才会是忽略大小写的
案例10:替换/etc/passwd中的root为ROOT
[root@localhost ~]# sed 's/root/ROOT/g' /etc/pwsswd
案例11:将模板机(192.168.15.200)中的ip替换成192.168.15.50
[root@localhost ~]# sed 's/\.200/\/50/g' /etc/sysysconfig/network-scripts/ifcfg-eth[01]
案例12:删除/etc/passwd中的所有偶数行
[root@localhost ~]# sed '1~2d' /etc/pwsswd # 1~2:偶数 1~3:代表奇数
案例13:在每一行的行首增加#号
[root@localhost ~]# sed -r 's/^ */#/g' 1.txt
案例14:将Hello World替换成World Hello
[root@localhost ~]# sed -r "s/(Hello) (World)/\2 \1/g" 2.txt
案例15:将1.txt中的每一行都添加一个.bak的后缀
[root@localhost ~]# sed -r "s/(.*)/\1\.bak/g" 1.txt # 利用分组的特性,来修改后缀
day14 linux三剑客之sed命令的更多相关文章
- Linux实战教学笔记12:linux三剑客之sed命令精讲
第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...
- linux三剑客之sed命令
一.前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令 ...
- 【linux三剑客】sed命令
sed - stream editor for filtering and transforming text sed 流编辑器 strem edition,实现对文件的增删改替换查是Linux中第二 ...
- Linux 三剑客之sed命令总结
sed ### sed ### .关键字取行 sed -n '/jpinsz/p' test.txt sed -n '/^d/p' test.txt .根据行数取行 sed -n '2,5p' tes ...
- (转)不看绝对后悔的Linux三剑客之sed实战精讲
不看绝对后悔的Linux三剑客之sed实战精讲 原文:http://blog.51cto.com/hujiangtao/1923718 二.Linux三剑客之sed命令精讲 1,前言 我们都知道,在L ...
- Linux 三剑客之sed
目录 Linux 三剑客之sed 命令补充: sort命令 uniq命令 cut命令 tr命令 wc命令 三剑客 - sed 编辑模式: 定位分类: 实例如下: d模式--删除模式 p模式--打印 a ...
- 文本处理三剑客之sed命令
第十八章.文本处理三剑客之sed命令 目录 sed介绍 sed命令常用选项 sed常用编辑命令 sed使用示例 sed高级语法 18.1.sed简介 sed全名stream editor,流编辑器,s ...
- Linux中使用sed命令或awk命令修改常规配置文件
一.方案: Linux中使用sed命令或awk命令修改常规配置文件 二.步骤: 1.假设有一个a.txt,内容如下: #!/bin/bash aa= bbb= ccc= #ddd= 2.如果想要把里面 ...
- Linux三剑客grep/sed/awk
grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...
随机推荐
- 数组中只出现过一次的数字 牛客网 剑指Offer
数组中只出现过一次的数字 牛客网 剑指Offer 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次.请写程序找出这两个只出现一次的数字. def FindNumsAppearOnce ...
- hdu 1027 Ignatius and the Princess II(正、逆康托)
题意: 给N和M. 输出1,2,...,N的第M大全排列. 思路: 将M逆康托,求出a1,a2,...aN. 看代码. 代码: int const MAXM=10000; int fac[15]; i ...
- Labview一个循环中放两个事件结构会导致前面板锁定的问题
建议在同一个循环中,只放置一个事件结构.此时,当一个事件发生时,事件结构将对事件进行处理,然后继续循环,事件结构再等待下一个事件发生. 如在同一个循环中放置两个事件结构,只有在两个事件结构都处理了事件 ...
- /etc/passwd 和 /etc/shadows 详解
linux操作系统上的用户如果需要登录主机,当其输入用户名和密码之后: 首先在/etc/passwd文件中查找是否有你的账号,如果没有无法登录,如果有的话将该用户的UID和GID读出来,此外将此用户的 ...
- robot_framewok自动化测试--(7)认识RIDE
认识 RIDE RIDE 作为 Robot Framework 的"脸面",虽然我们已经可以拿它来创建和运行测试了,但我们对它的认识并不全面,这一小节我们将了解这个工具的使用. 1 ...
- 基于I2C的AHT20温湿度传感器的数据采集
关于:IC( Inter-- Integrated Circuit)总线是一种由 PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.它是由数据线SDA和时钟SCL构成的串行总线,可 ...
- 第三课 Dubbo设计中的设计模式
责任链模式 责任链模式在Dubbo中发挥的作用举足轻重,就像是Dubbo框架的骨架.Dubbo的调用链组织是用责任链模式串连起来的. 责任链中的每个节点实现Filter接口,然后由ProtocolF ...
- Part 33 Angular nested scopes and controller as syntax
Working with nested scopes using $scope object : The following code creates 3 controllers - country ...
- Hadoop HA集群 与 开发环境部署
每一次 Hadoop 生态的更新都是如此令人激动 像是 hadoop3x 精简了内核,spark3 在调用 R 语言的 UDF 方面,速度提升了 40 倍 所以该文章肯定得配备上最新的生态 hadoo ...
- 谱文混排之lilypond-book
Lilypond有自带的谱文混排的工具lilypond-book,但是作为外行,一直很难搞清楚这个操作是怎样做的.很久之前请教过别人,但介于我的个人能力,只有粗浅理解,操作不得要领.在许多信息的拼凑之 ...