运维之道 | 三剑客之sed命令 - 增删改查排
sed命令语法格式
sed [参数] [条件/指令] [文件名称]
参数 | 功能 |
---|---|
-n | 取消默认输出 |
-i | 修改文件内容 |
-e | 执行多个指令 |
-r | 识别扩展正则符号 |
指令 | 功能 |
---|---|
p | 输出 |
d | 删除 |
s | 替换 |
g | 匹配文件内容中的所有信息 |
i | 在当前行上一行插入信息 |
a | 在当前行下一行插入信息 |
c | 替换正行信息 |
增加测试文本
[root@sed ~]# cat << EOF > test.sh
> 1001,AAAA,CEO
> 1002,BBBB,CFO
> 1003,CCCC,CTO
> 1004,DDDD,COO
> 1005,EEEE,CIO
> EOF[root@sed ~]# cat test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COO
1005,EEEE,CIO
一、sed - 查询
1、查看文本所有内容
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COO
1005,EEEE,CIO
2、查看文本第二行内容
[root@sed ~]# sed -n '2p' test.sh
1002,BBBB,CFO
3、如果不加-n
参数的话,则显示文本的所有内容,在这里可以将-n
理解为消除多余输出
[root@sed ~]# sed '2p' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COO
1005,EEEE,CIO
4、查看文本2-4
行的内容(连续)
[root@sed ~]# sed -n '2,4p' test.sh
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COO
5、查看文本指定行(第2和第4行
)内容(不连续)
[root@sed ~]# sed -n '2p;4p' test.sh
1002,BBBB,CFO
1004,DDDD,COO
6、使用-e
参数将指令分开执行
[root@sed ~]# sed -ne '2p' -e '4p' test.sh
1002,BBBB,CFO
1004,DDDD,COO
7、使用!
排除指定单行
[root@sed ~]# sed -n '2!p' test.sh
1001,AAAA,CEO
1003,CCCC,CTO
1004,DDDD,COO
1005,EEEE,CIO
8、使用!
排除2-4行(连续)
[root@sed ~]# sed -n '2,4!p' test.sh
1001,AAAA,CEO
1005,EEEE,CIO
9、查询文本中带有00
字段的内容
[root@sed ~]# sed -n '/00/p' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COO
1005,EEEE,CIO
10、查询文本中CEO
到CTO
中的所有字段
[root@sed ~]# sed -n '/CEO/,/CTO/p' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CTO
11、查询以1003
开头的字段
[root@sed ~]# sed -n '/^1003/p' test.sh
1003,CCCC,CTO
12、查询文本最后一行内容
[root@sed ~]# sed -n '$p' test.sh
1005,EEEE,CIO
二、sed - 增加
1、新增内容到文本第二行下
中需要加一个参数-i
,但不可与-n
连用,否则会将文件内容清空
[root@sed ~]# sed -i '2a 1111111111' test.sh
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1111111111
1003,CCCC,CTO
1004,DDDD,COO
1005,EEEE,CIO
2、新增内容到文本第二行上
中需要加一个参数-i
,但不可与-n
连用,否则会将文件内容清空
[root@sed ~]# sed -i '2i 222222222222' test.sh
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
222222222222
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COO
1005,EEEE,CIO
3、向文本最后追加内容
[root@sed ~]# sed -i '$a 333333333333' test.sh
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COO
1005,EEEE,CIO
333333333333
4、向文本中追加多行内容
[root@sed ~]# sed -i '3a 4444444\n5555555' test.sh
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CTO
4444444
5555555
1004,DDDD,COO
1005,EEEE,CIO
5、向文本指定行添加多行内容
[root@sed ~]# sed -e '2i 1111111' -e '2a 2222222' test.sh
1001,AAAA,CEO
1111111
1002,BBBB,CFO
2222222
1003,CCCC,CTO
1004,DDDD,COO
1005,EEEE,CIO
6、向每行行首添加#
字符
[root@sed ~]# sed -i 's/^/#/g' test.sh
[root@sed ~]# sed '' test.sh
#1001,AAAA,CEO
#1002,BBBB,CFO
#1003,CCCC,CTO
#1004,DDDD,COO
#1005,EEEE,CIO
三、sed - 修改
1、修改指定内容
[root@sed ~]# sed -i 's#CTO#CCCCCCCCCCCC#g' test.sh
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CCCCCCCCCCCC
1004,DDDD,COO
1005,EEEE,CIO
2、修改文本中的内容O
修改为W
[root@sed ~]# sed -i 's#O#W#' test.sh
[root@sed ~]# sed '' test.sh
1001,AAAA,CEW
1002,BBBB,CFW
1003,CCCC,CTW
1004,DDDD,CWW
1005,EEEE,CIW
3、匹配到某行的单个内容,并修改整行内容:CIO
字段行修改为6666666
[root@sed ~]# sed -i '/CIO/c 66666666' test.sh
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COW
66666666
4、修改指定行的正行内容
[root@sed ~]# sed -i '1c AAAAAAAA' test.sh
[root@sed ~]# sed '' test.sh
AAAAAAAA
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COO
1005,EEEE,CIO
四、sed - 删除
1、删除空行
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
1002,BBBB,CFO1003,CCCC,CTO
1004,DDDD,COW
[root@sed ~]# sed -i '/^$/d' test.sh
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COW
2、删除#
字符
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COO
1005,EEEE,CIO
######
[root@sed ~]# sed -i '/#/d' test.sh
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COO
1005,EEEE,CIO
3、删除指定行内容
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COW
66666666
[root@sed ~]# sed -i '5d' test.sh
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COW
4、删除1-3
行内容(连续)
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COW
[root@sed ~]# sed -i '1,3d' test.sh
[root@sed ~]# sed '' test.sh
1004,DDDD,COW
5、删除指定多行内容
方法一:
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COO
1005,EEEE,CIO
[root@sed ~]# sed -i '1d;3d' test.sh
[root@sed ~]# sed '' test.sh
1002,BBBB,CFO
1004,DDDD,COO
1005,EEEE,CIO
方法二:
[root@sed ~]# sed '' test.sh
1002,BBBB,CFO
1004,DDDD,COO
1005,EEEE,CIO
[root@sed ~]# sed -e '1d' -e '2d' test.sh
1005,EEEE,CIO
6、删除每行行首#
字符
[root@sed ~]# sed '' test.sh
#1001,AAAA,CEO
#1002,BBBB,CFO
#1003,CCCC,CTO
#1004,DDDD,COO
#1005,EEEE,CIO
[root@sed ~]# sed -i 's/^#//' test.sh
[root@sed ~]# sed '' test.sh
1001,AAAA,CEO
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COO
1005,EEEE,CIO
六、sed - 排除
1、排除第一行内容
[root@sed ~]# sed -n '1!p' test.sh
1002,BBBB,CFO
1003,CCCC,CTO
1004,DDDD,COO
1005,EEEE,CIO
2、排除连续多行内容
[root@sed ~]# sed -n '1,3!p' test.sh
1004,DDDD,COO
1005,EEEE,CIO
练习
1、批量修改文件的扩展名,将villian.txt
修改为villian.png
[root@sed zwl]# touch villian{1..5}.txt
[root@sed zwl]# ll
总用量 0
-rw-r--r--. 1 root root 0 3月 4 13:52 villian1.txt
-rw-r--r--. 1 root root 0 3月 4 13:52 villian2.txt
-rw-r--r--. 1 root root 0 3月 4 13:52 villian3.txt
-rw-r--r--. 1 root root 0 3月 4 13:52 villian4.txt
-rw-r--r--. 1 root root 0 3月 4 13:52 villian5.txt[root@sed zwl]# ls villian*.txt|sed -r 's#(.*)txt#mv & \1png#g'|bash
[root@sed zwl]# ll
总用量 0
-rw-r--r--. 1 root root 0 3月 4 13:52 villian1.png
-rw-r--r--. 1 root root 0 3月 4 13:52 villian2.png
-rw-r--r--. 1 root root 0 3月 4 13:52 villian3.png
-rw-r--r--. 1 root root 0 3月 4 13:52 villian4.png
-rw-r--r--. 1 root root 0 3月 4 13:52 villian5.png
PS:替换命令 s/A/B/g
,B中的 \1
指的就是正则A中的第一个小括号里匹配到的内容(.*)
,相当于mv \1 png
PS:专业命令:rename 原文件的格式 修改后文件的格式 原文件的文件名
------rename .txt .png villian*.txt
运维之道 | 三剑客之sed命令 - 增删改查排相关推荐
- 运维之道 | 三剑客之awk命令 - 排查统替
awk的用法: awk 参数 ' BEGIN{} // {action1;action2} ' END{} 文件名 参数: -F :指定分隔符 -f :调用脚本 -v :定义变量 Begin{} :初 ...
- linux日志查看面试题,Linux 运维面试题 三剑客(sed awk grep)整理
一. 三剑客-基础部分题目 1. 选择 1.在给定文件中查找与条件相符字符串的命令及查找某个目录下相应文件的命令为:(多选)(AC)A:grep B:gzip C:find D:sort 2.在给定文 ...
- MySQL数据库5.7版本安装部署及常规命令 增删改查 索引 事务 优化
概述:数据库(Database)是按照数据结构组织.存储和管理数据的仓库,它产生于距今六十多年前,数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统,在各个方面得 ...
- 系统运维系列 之Clickhouse数据库学习集锦(增删改查操作)
1 简介 本篇内容涉及一些增删改查操作,包括数据库.表,重点介绍字段的增加/删除操作,其中包含的内容均实际测试通过. 2 Clickhouse clickhouse是一款MPP架构的列式存储数据库,它 ...
- 运维27道Linux面试题
1.解释下什么是GPL,GNU,自由软件? GPL:(通用公共许可证):一种授权,任何人有权取得.修改.重新发布自由软件的权力. GNU:(革奴计划):目标是创建一套完全自由.开放的的操作系统. 自由 ...
- linux中sed和find,Linux运维知识之Linux 之 sed 与 find 命令结合使用
本文主要向大家介绍了Linux运维知识之Linux 之 sed 与 find 命令结合使用,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. sed 与 find 命令结合使用 目 ...
- Linux运维之道-基础命令
基础命令 参照 linux运维之道(丁明一) 文章目录 基础命令 一.目录以及文件的基本操作 1. pwd 2.cd 3.ls 4.touch 5.mkdir 6.cp 7.rm 8.mv 9.fin ...
- 运维之道 | MySQL增删改查插入必会命令大全
MySQL增删改查插入必会命令大全 基本命令 1.登录mysql [root@localhost ~]# mysql -u root -p 2.查询当前所存在的库 MariaDB [(none)]&g ...
- Linux实战教学笔记12:linux三剑客之sed命令精讲
第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...
最新文章
- CSS3秘笈第三版涵盖HTML5学习笔记6~8章
- SD-WAN的C级视图
- 动画专业艺术里最懂计算机的,美国数字媒体艺术专业了解一下!
- 高性能、高可靠分布式文件系统 go-fastdfs v1.2.0 发布
- 面试题 02.02. 返回倒数第 k 个节点
- char* 赋值 const char* 释放_Effective C++读书笔记之条款3:尽可能使用const
- android添加工程依赖工程,将项目依赖项添加到Android studio中的另一个项目
- markdown与latex:书写单边大括号左边或右边即在没有括号的一端加点
- 汉诺塔问题详解(C语言)
- php短信接口开发(http协议)
- python数学符号读法大全_常用数学符号读法大全
- Word转成PDF格式会变吗?教你3个免费方法
- 【无标题】iTunes更新报错1110错误代码
- 《罗辑思维》第31期:你的女神你不懂
- 2022年度猫狗粮销售数据:十大热门品牌排行榜,哪些品牌入围?
- 【山头斜照却相迎】初入计算机学习计划推荐
- 基于springboot,vue校园点餐系统
- UML(Jude) | UseCase Diagram
- 3.六大原则例子-- 依赖倒置原则(DIP)例子
- 苹果邮箱 android设置字体,MacOS如何修改邮件字体大小?MacOS修改邮件字体大小的方法...