注意sed和awk使用单引号,双引号有特殊解释

sed是Stream Editor(字符流编辑器)的缩写,简称流编辑器。

sed是操作、过滤和转换文本内容的强大工具。

常用功能包括结合正则表达式对文件实现快速增删改查,其中查询的功能中最常用的两大功能是过滤(过滤指定字符串)、取行(取出指定行)。


语法:

sed [选项] [sed内置命令字符] [输入文件]

选项:

参数选项 解释
-n 取消默认sed的输出,常与sed内置命令p一起用
-i 直接将修改结果写入文件,不用-i,sed修改的是内存数据
-e 多次编辑,不需要管道符了
-r 支持正则扩展

sed的内置命令字符用于对文件进行不同的操作功能,如对文件增删改查

sed常用内置命令字符

sed的内置命令字符 解释
a append,对文本追加,在指定行后面添加一行/多行文本
d Delete,删除匹配行
i insert,表示插入文本,在指定行前添加一行/多行文本
p Print ,打印匹配行的内容,通常p与-n一起用
s/正则/替换内容/g 匹配正则内容,然后替换内容(支持正则),结尾g代表全局匹配

sed匹配范围

范围 解释
空地址 全文处理
单地址 指定文件某一行
/pattern/ 被模式匹配到的每一行
范围区间 10,20 十到二十行10,+5第10行向下5行/pattern1/,/pattern2/
步长 1~2,表示1、3、5、7、9行2~2两个步长,表示2、4、6、8、10、偶数行

sed案例

准备测试数据

[root@pylinux data]# cat -n luffycity.txt
1 My name is chaoge.
2 I teach linux.
3 I like play computer game.
4 My qq is 877348180.
5 My website is http://pythonav.cn.

1.输出文件第2,3行的内容

[root@pylinux data]# sed -n '2,3p' luffycity.txt
I teach linux.
I like play computer game.


2.过滤出含有linux的字符串行

#sed可以实现grep的过滤效果,必须吧要过滤的内容放在双斜杠中
[root@pylinux data]# sed -n '/linux/p' luffycity.txt
I teach linux.

3.删除含有game的行

注意sed想要修改文件内容,还得用-i参数

[root@pylinux data]# sed '/game/d' luffycity.txt
My name is chaoge.
I teach linux.
My qq is 877348180.
My website is http://pythonav.cn.

想要将修改结果写入到文件,还得这么敲

[root@pylinux data]# sed  -i '/game/d' luffycity.txt  #不会输出结果,直接写入文件

删掉2,3两行

[root@pylinux data]# sed '2,3d' luffycity.txt

删除第5行到结尾

[root@pylinux data]# sed '5,$d'  luffycity.txt
My name is chaoge.
----------
I teach linux.
----------

4.将文件中的My全部替换为His

  • s内置符配合g,代表全局替换,中间的"/"可以替换为"#@/"等
[root@pylinux data]# sed 's/My/His/g' luffycity.txt
His name is chaoge.
I teach linux.
I like play computer game.
His qq is 877348180.
His website is http://pythonav.cn.

5.替换所有My为His,同时换掉QQ号为8888888

[root@pylinux data]# sed -e 's/My/His/g' -e 's/877348180/88888/g' luffycity.txt
His name is chaoge.
I teach linux.
I like play computer game.
His qq is 88888.
His website is http://pythonav.cn.

6.在文件第二行追加内容 a字符功能,写入到文件,还得添加 -i

[root@pylinux data]# sed -i '2a I am useing  sed command' luffycity.txt
My name is chaoge.
I teach linux.
I am useing sed command
I like play computer game.
My qq is 877348180.
My website is http://pythonav.cn.

添加多行信息,用换行符"\n"

[root@pylinux data]# sed -i "3a i like linux very much.\nand you?" luffycity.txt
[root@pylinux data]#
[root@pylinux data]# cat -n luffycity.txt
1 My name is chaoge.
2 I teach linux.
3 I am useing sed command
4 i like linux very much.
5 and you?
6 I like play computer game.
7 My qq is 877348180.
8 My website is http://pythonav.cn.

在每一行下面插入新内容

[root@pylinux data]# sed "a ----------" luffycity.txt
My name is chaoge.
----------
I teach linux.
----------
I am useing sed command
----------
i like linux very much.
----------
and you?
----------
I like play computer game.
----------
My qq is 877348180.
----------
My website is http://pythonav.cn.
----------

7.在第二行上面插入内容

[root@pylinux data]# sed '2i i am 27' luffycity.txt
My name is chaoge.
i am 27
----------
I teach linux.
----------
I am useing sed command
----------
i like linux very much.
----------
and you?
----------
I like play computer game.
----------
My qq is 877348180.
----------
My website is http://pythonav.cn.
----------

sed配合正则表达式企业案例

上一节是用grep -E 扩展正则表达式,这一节是用sed配合正则表达式使用

取出linux的IP地址

1.删除网卡信息

去头去尾法

交给管道符,一次去头,一次去尾

思路:
1.首先取出第二行
[root@pylinux ~]# ifconfig | sed -n '2p'
inet 10.141.32.137 netmask 255.255.192.0 broadcast 10.141.63.255 2.找到第二行后,去掉ip之前的内容
[root@pylinux ~]# ifconfig eth0|sed -n '2s#^.*inet##gp'
10.141.32.137 netmask 255.255.192.0 broadcast 10.141.63.255
解释:
-n是取消默认输出
2s是处理第二行内容
#^.*inet## 是匹配inet前所有的内容
gp代表全局替换且打印替换结果 3.再次处理,去掉ip后面的内容
[root@pylinux tmp]# sed -n '2s/^.*inet//gp' ip.txt | sed -n 's/net.*$//gp'
10.141.32.137 解释:
net.*$ 匹配net到结尾的内容
s/net.*$//gp #把匹配到的内容替换为空

-e参数多次编辑

[root@pylinux tmp]# ifconfig eth0  | sed -ne '2s/^.*inet//g'  -e '2s/net.*$//gp'
10.141.32.137

Linux三剑客sed的更多相关文章

  1. Linux(8):linux三剑客sed和awk & Shell 编程(1)

    linux 三剑客 之 sed # sed 是什么? # sed : 字符流编辑器 Stream Editor: sed 擅长 替换.取行等 # sed 的功能与版本: 处理纯文本文件.日志.配置文件 ...

  2. Linux三剑客-SED

    1.Sed是什么 Sed:字符流编辑器,Stream Editor 2.Sed功能与版本 处理日志文件,日志,配置文件等 增加.删除.修改.查询 sed --version 可以通过man sed 来 ...

  3. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  4. (转)不看绝对后悔的Linux三剑客之sed实战精讲

    不看绝对后悔的Linux三剑客之sed实战精讲 原文:http://blog.51cto.com/hujiangtao/1923718 二.Linux三剑客之sed命令精讲 1,前言 我们都知道,在L ...

  5. Linux三剑客grep、awk、sed

    何为Linux三剑客? 第一个剑客是 grep,grep 会根据正则表达式查找相关内容并打印对应的数据. 第二个剑客是 awk,awk 的名字来源于三个作者的名字简称,它可以根据定位到的数据行处理其中 ...

  6. Linux三剑客grep、awk和sed

    grep,sed 和 awk是Linux/Unix 系统中常用的三个文本处理的命令行工具,称为文本处理三剑客.本文将简要介绍这三个命令并给出基本用法. 管道 在介绍这两个命令之前,有必要介绍一下Uni ...

  7. 性能工具之linux三剑客awk、grep、sed详解

    前言 linux 有很多工具可以做文本处理,例如:sort, cut, split, join, paste, comm, uniq, column, rev, tac, tr, nl, pr, he ...

  8. day14 linux三剑客之sed命令

    day14 linux三剑客之sed命令 sed命令 Sed 主要用来自动编辑一个或多个文件.简化对文件的反复操作.编写转换程序等. sed(流式编辑器) : sed主要用来修改文件. 1.sed命令 ...

  9. Linux 三剑客之sed

    目录 Linux 三剑客之sed 命令补充: sort命令 uniq命令 cut命令 tr命令 wc命令 三剑客 - sed 编辑模式: 定位分类: 实例如下: d模式--删除模式 p模式--打印 a ...

随机推荐

  1. Mysql和Redis数据如何保持一致

    先阐明一下Mysql和Redis的关系:Mysql是数据库,用来持久化数据,一定程度上保证数据的可靠性:Redis是用来当缓存,用来提升数据访问的性能. 关于如何保证Mysql和Redis中的数据一致 ...

  2. P4767 [IOI2000]邮局 - 平行四边形不等式优化DP

    There is a straight highway with villages alongside the highway. The highway is represented as an in ...

  3. 【Java】学习路径30-可变参数 Variable Parameter

    定义一个add函数,要求其功能:传入任意数量的参数然后返回相加的结果. public class VariableParameter { public static void main(String[ ...

  4. k8s手动扩缩容

    1. 查询deploy副本数,ready数表示副本数 kubectl get deploy 2.通过命令直接扩容或者缩容,--replicas=1表示把my-dep缩容到副本数1,--replicas ...

  5. liunx系统docker部署.net core3.1

    此篇文章演示基本的基于docker部署.netcore服务,liunx系统腾讯云ubuntu,.net core版本3.1. 1.安装docker apt install docker.io 2.拉取 ...

  6. 安卓平台RTMP推流或轻量级RTSP服务(摄像头或同屏)编码前数据接入类型总结

    很多开发者在做Android平台RTMP推流或轻量级RTSP服务(摄像头或同屏)时,总感觉接口不够用,以大牛直播SDK为例 (Github) 我们来总结下,我们常规需要支持的编码前音视频数据有哪些类型 ...

  7. 为什么Index Only Scan却还需要访问表

    在实际SQL优化工作中,我们经常会发现SQL 执行计划明明是 "Index Only Scan",但执行计划后面却有 "Heap Fetches: x" ,也就 ...

  8. C#/VB.NET 如何在Excel中使用条件格式设置交替行颜色

    说起高亮数据行,不让人想起了交替颜色行,有的人把交替颜色行也都设置成高亮,不仅不美观,而且对阅读还是个干扰.隔行交替的颜色是为了阅读不串行,这些行只是环境,数据才是主体.那么如何通过C#/VB.NET ...

  9. Windows客户端DNS工作原理

    通常大家对Windows客户端DNS的配置存在多个误区. 误区一,配置1个内网DNS,1个外网DNS.解析内网的时候用内网DNS,解析外网的时候用外网. 电脑怎么知道哪个是内网?哪个是外网?我们内部的 ...

  10. KeeWiDB:兼容Redis协议,领跑NoSQL

    如果现在的我们离开了互联网,生活会是什么样子? 互联网++++,已经深刻渗透到人们的生活中. 不知道大家有没有想过?每一个互联网+结合的背后都是海量的存储需求.你查看的每一个商品.组建的每一个战队.阅 ...