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命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...
随机推荐
- P1197 [JSOI2008]星球大战 [删边求连通块个数]
展开 题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治着整个星系. 某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的 ...
- [Git:commit错误] Fatal: cannot do a partial commit during a merge
注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 问题场景 今天进行Spring Boot版本升级,解决冲突后进行代码文件提交时出现这个错误. 上午 ...
- MySQL基础篇(02):从五个维度出发,审视表结构设计
本文源码:GitHub·点这里 || GitEE·点这里 一.数据场景 1.表结构简介 任何工具类的东西都是为了解决某个场景下的问题,比如Redis缓存系统热点数据,ClickHouse解决海量数据的 ...
- Transformation HDU - 4578 完全平方公式和立方公式展开,有点麻烦
#include <stdio.h> #include <algorithm> #include <iostream> #include <string.h& ...
- 论文阅读笔记(十五)【CVPR2016】:Top-push Video-based Person Re-identification
Approach 特征由两部分组成:space-time特征和外貌特征.space-time特征由HOG3D[传送门]提取,其包含了空间梯度和时间动态信息:外貌特征采用颜色直方图[传送门]和LBP[传 ...
- Python安装和配置环境变量(简明教程)
声明:借鉴Python 简明教程 安装我们在本书中提到的「Python 3」指的是 Python 版本大于或等于 Python 3.6.0. 针对Python3.6.版本:注意数据的缓存机制 # ## ...
- JN_0013:win10快速回桌面
4.最后一种方法是最为实用的方法.按快捷键[windows键+D键],如下图所示,两键同时按,或者先按住windows键不放再按D键.这种方法在任何时候都是有用的,并且熟练使用后可以达到非常快的速度: ...
- ASP.NET Identity登录原理
https://www.cnblogs.com/jesse2013/p/aspnet-identity-claims-based-authentication-and-owin.html 如何实现登录 ...
- 【剑指Offer】60、按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 题解:BFS 主要的方法与BFS写法没什么区 ...
- PAT (Advanced Level) Practice 1011 World Cup Betting (20 分) (找最值)
With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...