sed 增删改查详解以及 sed -i原理
我为什么要详细记录sed命令:
添加测试文本:
|
101,$oldboy,CEO
102,$zhangyao,CTO
103,$Alex,COO
104,$yy,CFO
105,$feixue,CIO
>>"EOF"
|
sed的语法格式:
sed命令的执行流程:

sed版本查看:
| sed -v |
sed基础参数:
|
-n 取消默认输出
-r 支持正则表达式
-p 打印
-e 多项编辑
-i.bak 修改后备份
s 搜索一次
sg 搜索全局
# # # : s#替换前#替换后#g
/ / / : 与###一样
|
sed功能详解:
sed增加:
sed i参数 :演示
增:
案例1:sed单行增加
| [root@chenleilei ~]# sed '2i nihaoya' sed.log 101,$oldboy,CEO nihaoya 102,$zhangyao,CTO 103,$Alex,COO 104,$yy,CFO 105,$feixue,CIO |
案例2:sed行前多行增加
| [root@chenleilei ~]# sed '2i nihaoya\nwohenhao' sed.log 101,$oldboy,CEO nihaoya wohenhao 102,$zhangyao,CTO 103,$Alex,COO 104,$yy,CFO 105,$feixue,CIO |
【增】案例1:sed行后单行增加
| [root@chenleilei ~]# sed '2a nihaoya' sed.log 101,$oldboy,CEO 102,$zhangyao,CTO nihaoya 103,$Alex,COO 104,$yy,CFO 105,$feixue,CIO |
【增】案例2:sed行后多行增加
|
[root@chenleilei ~]# sed '2a nihaoya\nwohenhao' sed.log
101,$oldboy,CEO
102,$zhangyao,CTO
nihaoya
wohenhao
103,$Alex,COO
104,$yy,CFO
105,$feixue,CIO
|
【增】案例3:sed 不同行多项增加 sed -e
| [root@chenleilei ~]# sed -e '2i 123' -e '5i 456' sed.log 101,$oldboy,CEO 123 102,$zhangyao,CTO 103,$Alex,COO 104,$yy,CFO 456 105,$feixue,CIO |
sed删除 (d)
| [root@chenleilei ~]# sed '4d' sed.log 101,$oldboy,CEO 102,$zhangyao,CTO 103,$Alex,COO 105,$feixue,CIO |
| [root@chenleilei ~]# sed '2,4d' sed.log 101,$oldboy,CEO 105,$feixue,CIO |
| seq 10 |sed -e{2,4,8}d ##注意这里不能添加引号或者双引号,否则报错 |
|
[root@chenleilei ~]# sed -nr '/103|105/!p' sed.log
101,$oldboy,CEO 102,$zhangyao,CTO 104,$yy,CFO ### !除了103.105开头的行 都删除 然后打印 |
【改.替换】sed修改案例1:
| [root@chenleilei ~]# sed 's#102#1031#g' sed.log 101,$oldboy,CEO 1031,$zhangyao,CTO 103,$Alex,COO 104,$yy,CFO 105,$feixue,CIO |
| [root@chenleilei ~]# sed -r '1s#[0-9]+#109#' sed.log 109,$oldboy,CEO 102,$zhangyao,CTO 103,$Alex,COO 104,$yy,CFO 105,$feixue,CIO |
| [root@chenleilei ~]# sed '1s#[0-9]#oldboy#g' sed.log oldboyoldboyoldboy,$oldboy,CEO 102,$zhangyao,CTO 103,$Alex,COO 104,$yy,CFO 105,$feixue,CIO 解决办法(-r): [root@chenleilei ~]# sed -r '1s#[0-9]+#oldboy#g' sed.log oldboy,$oldboy,CEO 102,$zhangyao,CTO 103,$Alex,COO 104,$yy,CFO 105,$feixue,CIO 如果配错了那么3个oldboy 如何改回101呢? [root@chenleilei ~]# sed -r '1s#(oldboy)+#101#' sed.log 101,$oldboy,CEO 102,$zhangyao,CTO 103,$Alex,COO 104,$yy,CFO 105,$feixue,CIO 如果你写成了 sed -r '1s#(oldboy)+#101#g' sed.log 也会不成功,那是因为 他有g选项,会全部替换,也就是3个oldboy。解决办法 把 oldboy 使用括号括起来,然后使用 s 尾部的g不要使用,g就是变成3个oldboy的源泉 |
|
[root@chenleilei ~]# sed -n '1,4p' sed.log
101,$oldboy,CEO
102,$zhangyao,CTO
103,$Alex,COO
104,$yy,CFO
|
| [root@chenleilei ~]# sed -n '1,4!p' sed.log 105,$feixue,CIO |
| [root@chenleilei ~]# sed -nr '/2|4/p' sed.log 102,$zhangyao,CTO 104,$yy,CFO |
| [root@chenleilei ~]# sed -n '/^103/p' sed.log 103,$Alex,COO |
| [root@chenleilei ~]# sed -n '/$103/p' sed.log 103,$Alex,COO,103 |
| [root@chenleilei ~]# sed -n '/^103/,/^105/p' sed.log 103,$Alex,COO 104,$yy,CFO 105,$feixue,CIO |
| [root@chenleilei ~]# sed -nr '/^103|^105/p' sed.log 103,$Alex,COO 105,$feixue,CIO |
| [root@chenleilei ~]# sed -n '1!p' sed.log 102,$zhangyao,CTO 103,$Alex,COO 104,$yy,CFO 105,$feixue,CIO |
| [root@chenleilei ~]# sed -n '1,2!p' sed.log 103,$Alex,COO 104,$yy,CFO 105,$feixue,CIO |
| [root@chenleilei ~]# sed -nr '/102|104/!p' sed.log 101,$oldboy,CEO 103,$Alex,COO 105,$feixue,CIO |
sed 增删改查详解以及 sed -i原理的更多相关文章
- iOS CoreData 增删改查详解
最近在学习CoreData, 因为项目开发中需要,特意学习和整理了一下,整理出来方便以后使用和同行借鉴.目前开发使用的Swift语言开发的项目.所以整理出来的是Swift版本,OC我就放弃了. 虽然S ...
- 【ASP.NET MVC】jqGrid 增删改查详解
1 概述 本篇文章主要是关于JqGrid的,主要功能包括使用JqGrid增删查改,导入导出,废话不多说,直接进入正题. 2 Demo相关 2.1 Demo展示 第一部分 第二部分 2.2 ...
- C# 数据操作系列 - 15 SqlSugar 增删改查详解
0. 前言 继上一篇,以及上上篇,我们对SqlSugar有了一个大概的认识,但是这并不完美,因为那些都是理论知识,无法描述我们工程开发中实际情况.而这一篇,将带领小伙伴们一起试着写一个能在工程中使用的 ...
- java基础: ArrayList集合应用, ArrayList增删改查详解,综合java基础实现学生管理系统,
1.ArrayList 集合和数组的区别 : 共同点:都是存储数据的容器 不同点:数组的容量是固定的,集合的容量是可变的 1.1 -ArrayList的构造方法和添加方法 public ArrayLi ...
- Yii2.0数据库操作增删改查详解
1.简单查询: one(): 根据查询结果返回查询的第一条记录. all(): 根据查询结果返回所有记录. count(): 返回记录的数量. sum(): 返回指定列的总数. average(): ...
- Easyui datagrid扩展子网格detailview增删改查详解
话不多gang,先上代码,将以下三个属性插入主网格的初始化参数中: view : detailview, //1 detailFormatter : function(index, row) { // ...
- linux的sed(增删改查)使用方法
sed的增删改查的基本操作 参考:https://www.cnblogs.com/0zcl/p/6855740.html 01:增(a) 2个sed命令,分别是:(这些操作都是在内存中进行的,所以不会 ...
- JavaScript---Dom树详解,节点查找方式(直接(id,class,tag),间接(父子,兄弟)),节点操作(增删改查,赋值节点,替换节点,),节点属性操作(增删改查),节点文本的操作(增删改查),事件
JavaScript---Dom树详解,节点查找方式(直接(id,class,tag),间接(父子,兄弟)),节点操作(增删改查,赋值节点,替换节点,),节点属性操作(增删改查),节点文本的操作(增删 ...
- SQLAlchemy02 /SQLAlchemy对数据的增删改查操作、属性常用数据类型详解
SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 目录 SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 1.用se ...
随机推荐
- Java-Maven-Runoob:Maven Eclipse
ylbtech-Java-Maven-Runoob:Maven Eclipse 1.返回顶部 1. Maven Eclipse Eclipse 提供了一个很好的插件 m2eclipse ,该插件能将 ...
- PHP中GD库的使用
1.基本步骤 <?php /** * Created by PhpStorm. * User: jiqing * Date: 18-4-9 * Time: 上午9:34 * 熟悉步骤 */ // ...
- Ceph recover的速度控制
前言 磁盘损坏对于一个大集群来说,可以说是必然发生的事情,即使再小的概率,磁盘量上去,总会坏那么几块盘,这个时候就会触发内部的修复过程,修复就是让不满足副本要求的PG,恢复到满足的情况 一般是踢掉坏盘 ...
- SSD知识
不管什么接口的SSD,一般都由以下部分组成:主控,Flash,板,壳,品牌.下面本佬就这些部分一一发帖,仅供娱乐参考,不作任何推荐和偏向,有不同见解请直接发表,有任何错误,请直接指正,不为吵架,只为娱 ...
- LinqHelper连接数据库配置
LinqHelper连接数据库配置/// <summary> /// Linq通用数据访问类 /// 指定TDataBase来代替后面要使用的数据上下文(指代) /// where:说明指 ...
- Java微信公众平台开发(十二)--微信用户信息的获取
转自:http://www.cuiyongzhi.com/post/56.html 前面的文章有讲到微信的一系列开发文章,包括token获取.菜单创建等,在这一篇将讲述在微信公众平台开发中如何获取微信 ...
- Eclipse中建立Maven项目后,Java Resources资源文件下没有src/main/java文件夹
当建立好一个Maven项目后,在Java Resources资源文件夹下没有看到src/main/java文件夹,然后手动去创建Source Folder时,提示该文件已存在,如图: 有一个解决办法: ...
- ansible命令详解
查看ansible版本 import ansible print(ansible.__version__) 命令参数 -m:要执行的模块,默认为command -a:模块的参数 -u:ssh连接的用户 ...
- 【282】◀▶ arcpy.mapping 常用函数说明
arcpy.mapping 教程入门 arcpy.mapping 指导原则 按字母顺序排序的 arcpy.mpping 类列表 按字母顺序排序的 arcpy.mpping 函数列表 按字母顺序排序的 ...
- Python文件修改和常用方法
为了更好地说明接下来的文件修改操作,我们有必要先来学习下文件操作的常用方法. 一.文件处理中的常用方法 #!/usr/bin/env python3 #-*- coding:utf-8 -*- # w ...