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 ...
随机推荐
- 2017中国大学生程序设计竞赛 - 女生专场 Deleting Edges(思维+最短路)
Deleting Edges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- 1133 Splitting A Linked List
题意:把链表按规则调整,使小于0的先输出,然后输出键值在[0,k]的,最后输出键值大于k的. 思路:利用vector<Node> v,v1,v2,v3.遍历链表,把小于0的push到v1中 ...
- Linux Restricted Shell Bypass
Author: @n4ckhcker & @h4d3sw0rm Introduction Hello, so first of all let’s explain what is a rest ...
- PHP文件操作(二)-文件的读取
1.fread() //读取打开的文件 fread(file,length) file:必选项,规定要读取的打开的文件 length:必选项,规定要读取的最大字节数. <?php $fil ...
- java成神之——文件IO
文件I/O Path Files File类 File和Path的区别和联系 FileFilter FileOutputStream FileInputStream 利用FileOutputStrea ...
- pandas数据对齐
Pandas的对齐运算 是数据清洗的重要过程,可以按索引对齐进行运算,如果没对齐的位置则补NaN,最后也可以填充NaN Series的对齐运算 1. Series 按行.索引对齐 示例代码: s1 = ...
- Python re模块与正则表达式的运用
re模块 永远不要起一个py文件的名字,这个名字和你已知的模块同名 查找 findall(): 匹配所有 每一项都是列表中的一个元素 语法 : findall(正则判断条件,要判断字符 ...
- 【HDU4970】Killing Monsters
题意 数轴上有n个点,有m座炮塔,每个炮塔有一个攻击范围和伤害,有k个怪物,给出他们的初始位置和血量,问最后有多少怪物能活着到达n点.n<=100000 分析 对于某个怪物,什么情况下它可以活着 ...
- mfs教程(一)
对于mfs文件系统也用了半年了,确实不错,最近又翻译了作者的三篇文章,再此一同发上,希望对大家有所帮助.不足之处还请指出,以便完善,谢谢! 感谢网友nonamexz做了精美的pdf文档 MFS文件系统 ...
- 在TFS中获取项目,获取最新和上传(迁入)
一.在TFS中获取项目: (1)team (2)connect to team.... (3)选择服务地址,然后close (4)然后映射本地文件夹下载项目 (5)mapped添加映射,在map下就可 ...