注意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. DevOps落地实践点滴和踩坑记录-(2) -聊聊平台建设

    很久没有写文章记录了,上一篇文章像流水账一样,把所见所闻一个个记录下来.这次专门聊聊DevOps平台的建设吧,有些新的体会和思考,希望给正在做这个事情的同学们一些启发吧. DevOps落地实践点滴和踩 ...

  2. Filter中的FilterChain.doFilter(req,resp)的报错解决

    服务器内部错误:500 Request processing failed; nested exception is java.lang.IllegalStateException: 提交响应后无法调 ...

  3. C++一些新的特性的理解(二)

    1 C++11多线程thread 重点: join和detach的使用场景 thread构造函数参数 绑定c函数 绑定类函数 线程封装基础类 互斥锁mutex condition notify.wai ...

  4. 第八十一篇:Vue购物车(二) 名称,图片,价格的渲染

    好家伙, 1,为组件封装属性, 需要封装以下属性: 需要定义的属性 属性名 值的类型 商品名 title String 商品图片 pic String 商品价格 price Number 是否勾选 s ...

  5. 校园网跨网段共享文件Samba+SSH

    Introduction This tutorial contains screenshots for the English version of Windows 10. Separate inst ...

  6. 设计模式——桥接模式(Bridge模式)

    基本介绍 桥接模式(Bridge模式):将实现与抽象放在两个不同的类层次中,使两层次可以独立改变 是一种结构型设计模式 说白了就是有多个维度的变化,这样的组合关系如果按照传统的方式会导致类爆炸,所以需 ...

  7. void指针;函数指针

    void 类型指针 void => 空类型 void* => 空类型指针,只存储地址的值,丢失类型,无法访问,要访问其值,我们必须对这个指针做出正确的 类型转换,然后再间接引用指针.voi ...

  8. MyBatis标签之Select resultType和resultMap

    摘要:介绍MyBatis 中Select标签的两个属性resultType和resultMap及其区别. 1 MyBatis动态SQL之if 语句 2 MyBatis动态sql之where标签|转 3 ...

  9. dotnet7 aot编译实战

    0 起因 这段日子看到dotnet7-rc1发布,我对NativeAot功能比较感兴趣,如果aot成功,这意味了我们的dotnet程序在防破解的上直接指数级提高.我随手使用asp.netcore-7. ...

  10. Kibana:运用索引模式的 formatter 来探索 IP 信息

    文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/107484674