day18 sed
具体功能作用:
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的更多相关文章
- sed的应用
h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...
- 文本处理三剑客之sed命令
第十八章.文本处理三剑客之sed命令 目录 sed介绍 sed命令常用选项 sed常用编辑命令 sed使用示例 sed高级语法 18.1.sed简介 sed全名stream editor,流编辑器,s ...
- 6-2 sed 命令
1. sed : stream editor,流编辑器 是处理纯ASICC纯文本,按行琢行操作的. 编辑器有两种,行编辑器和全屏编辑器 sed:默认不编辑原文件,仅对模式空间中的数据做处理,而后.处理 ...
- 基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od
awk awk是个很好用的东西,大量使用在linux系统分析的结果展示处理上.并且可以使用管道, input | awk '' | output 1.首先要知道形式 awk 'command' fi ...
- sed awk grep三剑客常用
sed的常用用法: awk的常用用法: grep的常用用法: 除了列出符合行之外,并且列出后10行. grep -A 10 Exception kzfinance-front.log 除了列出符合行之 ...
- linux shell 用sed命令在文本的行尾或行首添加字符
转自 http://www.cnblogs.com/aaronwxb/archive/2011/08/19/2145364.html 昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed ...
- Sed、Awk单行脚本快速参考
文本间隔: # 在每一行后面增加一空行 sed G awk '{printf("%s\n\n",$0)}' # 将原来的所有空行删除并在每一行后面增加一空行. # 这样在输出的文本 ...
- sed awk 样例
sed [options] '[action]' filename options: -n:一般sed命令会把所有数据都输出到屏幕,如果加入此选项,则只会把经过sed命令处理的行输出到屏幕. -e:允 ...
- linux sed命令详解
简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...
随机推荐
- idea 普通项目 改成 maven项目
首先 pom.xml 是必要的 然后在该文件上右击 add as maven project
- ext4文件系统启动自检的必要性
最近我们发现多个用户设备掉电后重启,系统不工作. 研究这些返修设备,发现这些设备的表象是网络连接失败,DNS resolve不了.进一步发现/etc/resolv.conf为空,所以应用程序没法进行D ...
- FPGA分频与倍频的简单总结(涉及自己设计,调用时钟IP核,调用MMCM原语模块)
原理介绍 1.分频 FPGA设计中时钟分频是重要的基础知识,对于分频通常是利用计数器来实现想要的时钟频率,由此可知分频后的频率周期更大.一般而言实现偶数系数的分频在程序设计上较为容易,而奇数分频则相对 ...
- MySQL 8 InnoDB 集群生产部署
生产部署InnoDB集群 1.先决条件 InnoDB集群使用组复制技术,所以InnoDB中的实例需要满足组复制要求.可以查看MySQL文档中组复制相关的部分,也可以通过AdminAPI提供的dba.c ...
- 自动驾驶定位算法-直方图滤波(Histogram Filter)定位
1.直方图滤波(Histogram Filter)的算法思想 直方图滤波的算法思想在于:它把整个状态空间dom(x(t))切分为互不相交的部分\(b_1.b_2....,b_{n-1}\),使得: 然 ...
- node模块化开发基本知识学习笔记
传统非模块化开发缺点: 1.命名冲突 2.文件依赖 标准的模块化规范: 1.AMD-requirejs 2.CMD-seajs 服务器端模块化规范: 1.CommonJS-Node.js 模块化相关的 ...
- jQuery---on注册事件的2种方式
on注册事件的2种方式 on注册事件的语法 on注册简单事件 // 这个是p自己注册的事件(简单事件) $("p").on("click", function ...
- SpringCloud(一)
什么是SpringCloud? Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均 ...
- springboot web - 启动(1) 创建SpringApplication
一. 测试代码 @SpringBootApplication public class SbmvcApplication { public static void main(String[] args ...
- Node.js_1.1
Node.js简介 Node.js是一个能够在服务器端运行JavaScript的开源代码.跨平台JavaScript运行环境 Node采用Google开发的V8引擎运行js代码,使用事件驱动.非阻塞和 ...