具体功能作用:
1) 文件中添加信息的能力 (增) ok
2) 文件中删除信息的能力 (删) ok
3) 文件中修改信息的能力 (改)
4) 文件中查询信息的能力 (查) OK

sed命令的语法信息
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
命令 参数 条件+处理= (指令) 处理文件信息

显示出文件中有oldboy行的信息
sed -n '/oldboy/p' oldboy.txt

cat >person.txt<<EOF
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
EOF

a sed命令查询信息方法
根据文件内容的行号进行查询:
测试1: 显示单行信息
[root@oldboyedu ~]# sed -n '3p' person.txt
103,Alex,COO
测试2: 根据行号信息,输出多行内容(连续)
[root@oldboyedu ~]# sed -n '1,3p' person.txt
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
测试3: 根据行号信息,输出多行内容(不连续)
[root@oldboyedu ~]# sed -n '1p;3p' person.txt
101,oldboy,CEO
103,Alex,COO

根据文件内容的信息进行查询:
测试1: 根据内容信息,输出单行内容
#将有oldboy行的信息找出来
[root@oldboyedu ~]# sed -n '/oldboy/p' person.txt
101,oldboy,CEO

测试2: 根据内容信息,输出多行内容(连续)
#将有oldboy到alex行的信息都输出出来
[root@oldboyedu ~]# sed -n '/oldboy/,/Alex/p' person.txt
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO

测试3: 根据内容信息,输出多行内容(不连续)
#将有oldboy和alex行的信息都输出出来
[root@oldboyedu ~]# sed -n '/oldboy/p;/Alex/p' person.txt
101,oldboy,CEO
103,Alex,COO
106,oldboy,CIO

b sed命令添加信息方法
在文件第一行添加信息:
100,oldgirl,UFO
[root@oldboyedu ~]# sed '1i100,oldgirl,UFO' person.txt
100,oldgirl,UFO
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO

在文件最后一行添加信息:
[root@oldboyedu ~]# sed '$a108,oldgirl,UFO' person.txt
100,oldgirl,UFO
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO
108,oldgirl,UFO

测试:
01. 在第三行后面添加oldboy.txt信息
sed '3aoldboy.txt' person.txt
02. 在第二行前面添加oldboy.txt信息
sed '2ioldboy.txt' person.txt
03. 在有oldboy行的前面添加oldgirl 后面添加olddog信息
sed -e '/oldboy/ioldgirl' -e '/oldboy/aolddog' person.txt

[root@oldboyedu ~]# sed -e '/oldboy/ioldgirl' -e '/oldboy/aolddog' person.txt
100,oldgirl,UFO
oldgirl
101,oldboy,CEO
olddog
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
oldgirl
106,oldboy,CIO
olddog

sed '$a100\n101' person.txt 添加多行信息
企业中编写配置文件:
IPaddress=10.10.10.1
mask=255.255.255.0
gateway=10.10.10.254

sed '$aIPaddress=10.10.10.1\nmask=255.255.255.0\ngateway=10.10.10.254' 文件名称

c sed命令删除信息方法
练习:
01. 删除单行信息
[root@oldboyedu ~]# #删除文件中第三行信息
[root@oldboyedu ~]# sed '3d' person.txt
100,oldgirl,UFO
101,oldboy,CEO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO

02. 删除多行信息
[root@oldboyedu ~]# #删除文件中第二行到第六行内容
[root@oldboyedu ~]# sed '2,6d' person.txt
100,oldgirl,UFO
106,oldboy,CIO

测试:
01. 删除有oldboy信息的行
sed '/oldboy/d' person.txt

02. 删除第三行和第六行
[root@oldboyedu ~]# #删除文件中第二行到第六行内容
[root@oldboyedu ~]# sed '2,6d' person.txt
100,oldgirl,UFO
106,oldboy,CIO

[root@oldboyedu ~]# sed '3d;6d' person.txt
100,oldgirl,UFO
101,oldboy,CEO
103,Alex,COO
104,yy,CFO
106,oldboy,CIO

问题: 如何利用sed命令取消空行显示
[root@oldboyedu ~]# sed -n '/./p' person.txt
100,oldgirl,UFO
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO

[root@oldboyedu ~]# sed '/^$/d' person.txt
100,oldgirl,UFO
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO

[root@oldboyedu ~]# sed -n '/^$/!p' person.txt
100,oldgirl,UFO
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO

d sed命令修改信息方法

sed 's#原有内容#修改后内容#g' 文件信息
[root@oldboyedu ~]# sed 's##oldgirl#old#g' person.txt
sed: -e expression #1, char 12: unknown option to `s'
[root@oldboyedu ~]# sed 's/#oldgirl/old/g' person.txt
100,old,UFO

101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO

104,yy,CFO
105,feixue,CIO
106,oldboy,CIO

sed 's#()#\n#g' 文件信息 后项引用前项进行替换修改
利用sed命令取出IP地址信息:
第一个历程: 取出有IP地址的行
[root@oldboyedu ~]# ip a s eth0|sed -n '3p'
inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0

第二个历程: 取出IP地址
[root@oldboyedu ~]# ip a s eth0|sed -n '3p'|sed -r 's#^.*net (.*)#\1#g'
10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0
[root@oldboyedu ~]# ip a s eth0|sed -n '3p'|sed -r 's#^.*net (.*)#\1#g'|sed -r 's#(.*)/24.*#\1#g'
10.0.0.200

sed -r 's#^.*net (.*)#\1#g'|sed -r 's#(.*)/24.*#\1#g' 进行整合
ip a s eth0|sed -n '3p'|sed -r 's#^.*net (.*)/24.*#\1#g'

sed -n '3p'|sed -r 's#^.*net (.*)/24.*#\1#g' 进行整合

sed -n '3 p'
sed -r 's#^.*net (.*)/24.*#\1#g'
sed -rn '3s#^.*net (.*)/24.*#\1#gp'
最终取IP地址方法
[root@oldboyedu ~]# ip a s eth0|sed -rn '3s#^.*net (.*)/24.*#\1#gp'
10.0.0.200

补充01: 修改文件内容直接进行自动备份
[root@oldboyedu ~]# sed -i.bak 's#oldboy#oldold#g' person.txt
[root@oldboyedu ~]# ll person.txt.bak
-rw-r--r--. 1 root root 104 Oct 10 11:40 person.txt.bak
[root@oldboyedu ~]# cat person.txt.bak
100,#oldgirl,UFO

101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO

104,yy,CFO
105,feixue,CIO
106,oldboy,CIO

补充02: 在真实替换文件内容时候,一定不能让n和i参数同时出现
[root@oldboyedu ~]# sed -ni 's#Alex#aaaa#gp' person.txt
103,aaaa,COO
[root@oldboyedu ~]# cat person.txt
103,aaaa,COO
说明: ni和参数同时使用,会将文件内容进行清空

测验替换功能:
创建测试环境:
-rw-r--r--. 1 root root 0 Oct 10 02:10 oldboy01.txt
-rw-r--r--. 1 root root 0 Oct 10 02:10 oldboy02.txt
-rw-r--r--. 1 root root 0 Oct 10 02:10 oldboy03.txt
-rw-r--r--. 1 root root 0 Oct 10 02:10 oldboy04.txt
-rw-r--r--. 1 root root 0 Oct 10 02:10 oldboy05.txt
-rw-r--r--. 1 root root 0 Oct 10 02:10 oldboy06.txt
-rw-r--r--. 1 root root 0 Oct 10 02:10 oldboy07.txt
-rw-r--r--. 1 root root 0 Oct 10 02:10 oldboy08.txt
-rw-r--r--. 1 root root 0 Oct 10 02:10 oldboy09.txt
-rw-r--r--. 1 root root 0 Oct 10 02:10 oldboy10.txt
批量修改文件的扩展名称 将oldboyxx.txt扩展名修改为oldboyxx.jpg

[root@oldboyedu oldboy]# ls oldboy*.txt|sed -r 's#(.*)txt#mv & \1jpg#g'
mv oldboy01.txt oldboy01.jpg
mv oldboy02.txt oldboy02.jpg
mv oldboy03.txt oldboy03.jpg
mv oldboy04.txt oldboy04.jpg
mv oldboy05.txt oldboy05.jpg
mv oldboy06.txt oldboy06.jpg
mv oldboy07.txt oldboy07.jpg
mv oldboy08.txt oldboy08.jpg
mv oldboy09.txt oldboy09.jpg
mv oldboy10.txt oldboy10.jpg
mv oldboy.txt oldboy.jpg
[root@oldboyedu oldboy]# ls oldboy*.txt|sed -r 's#(.*)txt#mv & \1jpg#g'|bash

批量重命名专业命令: rename
rename .txt .jpg oldboy*.txt
命令 文件名称需要修改的部分信息 修改成什么信息 将什么样的文件进行修改

[root@oldboyedu ~]# cat person.txt|sed -i 's#COO#CEO#g'
sed: no input files
[root@oldboyedu ~]# sed -i 's#COO#CEO#g' person.txt

文件中添加内容方法:
01. vim/vi
02. cat >>xxx<EOF .. EOF
03. echo -e "xxx\nxxx"
04. sed 'na/i xxxx\nxxxx\nsxxxx'

总结: sed命令的指令信息
p print 输出信息
i insert 插入信息,在指定信息前面插入新的信息
a append 附加信息,在指定信息后面附加新的信息
d delete 删除指定信息
s substitute 替换信息 s###g(全局替换)
c 替换修改指定的一整行信息
[root@oldboyedu ~]# sed '2coldboyedu-sz-01' person.txt
103,aaaa,CEO
oldboyedu-sz-01

day18 sed的更多相关文章

  1. sed的应用

    h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...

  2. 文本处理三剑客之sed命令

    第十八章.文本处理三剑客之sed命令 目录 sed介绍 sed命令常用选项 sed常用编辑命令 sed使用示例 sed高级语法 18.1.sed简介 sed全名stream editor,流编辑器,s ...

  3. 6-2 sed 命令

    1. sed : stream editor,流编辑器 是处理纯ASICC纯文本,按行琢行操作的. 编辑器有两种,行编辑器和全屏编辑器 sed:默认不编辑原文件,仅对模式空间中的数据做处理,而后.处理 ...

  4. 基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od

    awk awk是个很好用的东西,大量使用在linux系统分析的结果展示处理上.并且可以使用管道, input | awk ''  | output 1.首先要知道形式 awk 'command' fi ...

  5. sed awk grep三剑客常用

    sed的常用用法: awk的常用用法: grep的常用用法: 除了列出符合行之外,并且列出后10行. grep -A 10 Exception kzfinance-front.log 除了列出符合行之 ...

  6. linux shell 用sed命令在文本的行尾或行首添加字符

    转自 http://www.cnblogs.com/aaronwxb/archive/2011/08/19/2145364.html 昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed ...

  7. Sed、Awk单行脚本快速参考

    文本间隔: # 在每一行后面增加一空行 sed G awk '{printf("%s\n\n",$0)}' # 将原来的所有空行删除并在每一行后面增加一空行. # 这样在输出的文本 ...

  8. sed awk 样例

    sed [options] '[action]' filename options: -n:一般sed命令会把所有数据都输出到屏幕,如果加入此选项,则只会把经过sed命令处理的行输出到屏幕. -e:允 ...

  9. linux sed命令详解

    简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...

随机推荐

  1. netty 4.x用户使用指南

    引言 问题 现在我们使用通用的应用程序或库来相互通信.例如,我们经常使用HTTP客户机从web服务器检索信息,并通过web服务调用远程过程调用.然而,通用协议或其实现有时不能很好地进行扩展.这就像我们 ...

  2. Jenkins 插件安装问题

    插件安装问题 尝试修改更新站点为可用的镜像站点 打开 Jenkins > Manage Jenkins > Manage Plugins > Advanced,将 Update Si ...

  3. Kali linux中安装字体的一种方法

    有人说,lucida sans typewriter字体是一种非常适合的编程字体,所以想试试.经过一番折腾,终于在Clion中用上了.步骤如下: 第一步:先下载这个字体. http://www.dow ...

  4. NodeJS_0001:关于install的方式

    最近在写Node程序的时候,突然对 npm install 的-save和-save-dev 这两个参数的使用比较混乱.其实博主在这之前对这两个参数的理解也是模糊的,各种查资料和实践后对它们之间的异同 ...

  5. Android之活动Activity用法

    Activity是Android的四大组件之一,本篇将通过Activity的生命周期,Intent的组成部分以及如何使用Intent进行页面之间的消息传递来介绍它的基本用法. 1.activity的生 ...

  6. IIS搭建负载均衡WebFarm+Arr

    本文所述仅针对IIS7.0或更高版本 一.IIS简介 IIS( Internet Information Services),微软官方Windows平台上面web容器服务.支持http协议和ftp协议 ...

  7. 阻止a链接跳转的点击事件

    <a href="http://www.baidu.com" id="btn">按钮</a> <script> docume ...

  8. 与soul上的一个妹子聊天有感

    写此篇的原因: 妹子说,我考上公务员了~,当时自己自己顿时哽咽了,不知道说什么,习惯性的说了句,恭喜恭喜啊.感受到妹子的欢喜与喜悦,我也没必要打扰她的兴致,她开心就好了嘛. 每个人的成就都是自己奋斗的 ...

  9. commons-dbutils实现增删改查(spring新注解)

    1.maven依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...

  10. 数据结构与算法之非比较排序【Java】

    比较排序与非比较排序的对比 常见的快速排序.归并排序.堆排序.冒泡排序等属于比较排序.在排序的最终结果里,元素之间的次序依赖于它们之间的比较.每个数都必须和其他数进行比较,才能确定自己的位置.在冒泡排 ...