说明

sed用于选取替换删除新增   sed [选项] [动作][文件]选项:
-n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕。
-e:允许对输入数据应用多条sed命令编辑。
-f 脚本文件名:从sed脚本中读入sed操作。和awk命令的-f非常类似。
-r:在sed中支持扩展正则表达式。
-i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出动作:
a \:追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。
c \:行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用“\”代表数据未结。
i \:插入,在当期行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。
d:删除,删除指定的行。
p:打印,输出指定的行。
s:字串替换,用一个字符串替换另外一个字符串。格式为“行范围s/ 旧字串/新字串/g”(和vim中的替换格式
类似)。sed所做的修改并不会直接改变文件的内容(如果是用管道符接收的命令的输出,这种情况连文件都没有),
而是把修改结果只显示到屏幕上,除非使用“-i”选项才会直接修改文件。

查询

-n只输出合乎条件的
p显示第二行
sed -n '2p' test.txt
输出:22 bbi修改
d删除第二行
sed -i '2d' test.txt

删除

删除第2行
m,n 表示对m和n行之间的所有行进行操作,也包含第m行和第n行
m,$ 表示对m行以及其后面的所有行进行操作
2d表示仅仅删除第2行
[root@localhost string]# sed '2d' t1.txt > t4.txt
[root@localhost string]# cat t4.txt
t1t1t1t1t1t1t1t1t1t1t1t1t1删除以2开头的行
sed '/^2/d' test.txt删除包含2的文件
sed '/2/d' test.txt

新增:a后i前c替换行s替换字符串

sed '1a hello world' test.txt
其中a命令表示在指定行的后面附加一行,1a则是在第一行的后面添加一行,添加的内容就是a后面的内容,如
果a的前面没有地址限定则在所有行的后面都会添加指定的字符串sed '1i hello world' test.txt
命令i表示在指定的行的前面插入一行,插入的内容为其后面的字符串sed '1c hello world' test.txt
命令c会替换指定的行的所有内容,替换成其后面的字符串,所有的新增,删除,替换行,这些命令前面的地址
修饰都可以指定地址空间,也都可以使用正则表达式,命令会应用在选出的符合地址条件的所有行上面,如:
sed '/^2/c hello world' test.txt
替换以2开头的行,其内容是c命令后面的字符串替换部分字符串而不是整行
sed 's/aa/AA/' test.txt
s/待替换的字符串/新字符串/ 也就是说使用后面的 AA 替换文件中出现的前面的 aa
sed '1s/aa/AA/g' test.txt
加上g选项之后,全局替换,也就说一行中所有符合条件的旧字符串都会被替换成新字符串,而不仅仅是第一个
可以看到仅仅对第一行进行了替换操作,其他的地址限定方法同样也是可以使用的,我们可以使用m,n的限定,
sed '5,$s/aa/AA/g' test.txt
sed '/^[0-9]/s/aa/AA/g' test.txt
我们在s命令前面添加了 /^[0-9]/ 这个修饰,该正则表达式表示对所有以数字开头的行,执行s操作

元字符

$ 表示行尾
^ 表示行首
[a-z0-9]表示字符范围
[^]表示除了字符集中的字符以外的字符sed的正则中  \(\)  和 \{m,n\} 需要转义
. 表示任意字符
* 表示零个或者多个
\+ 一次或多次  
\? 零次或一次
\| 表示或语法

例子

sed -n '/^2011-08-23.*ERROR/p' demolog.log2011-08-23 19:57:30,709 [] ERROR bo.CommodityCerOrderBO - order-fi
2011-08-23 19:57:31,721 [] ERROR bo.CommodityCerOrderBO - order-f提取demo.log中的日期,日志级别,订单id和状态。
sed -f demo.sed2 demo.log
#下面的一行是替换指令,就是把19位长的日期和INFO/ERROR,id,和后面的一截提取出来,然后用@分割符把这
4个字段重新按顺序组合
s/^\([-\: 0-9]\{19\}\).*\(INFO\|ERROR\) .*order-fix.curr_id:\([0-9]\+\),\(.*$\)/\1@\3@\2@\4/p 输出:
2011-08-23 19:57:30@10117@INFO@status:attr_ids不含0跳过
2011-08-23 19:57:30@10117@ERROR@status:添加属性id,但由于认证分类参数有误默认取匹配属性名称的第
一个属性id:100104
2011-08-23 19:57:31@10117@ERROR@status:添加属性id,但由于认证分类参数有误默认取匹配属性名称的第
一个属性id:100105

Linux之sed:修改器按照字符和行数进行筛选和替换行值 选项[动作相关推荐

  1. 需求:过滤下面这个网页里共723行 校对中里 行数为两位数的 行 并设置sz和rz在Windows和Linux之间发送和接收文件不用搭FTP...

    需求:过滤下面这个网页里共723行 校对中里 行数为两位数的 行 并设置sz和rz在Windows和Linux之间发送和接收文件不用搭FTP 需求:过滤下面这个网页里共723行 校对中里 行数为两位数 ...

  2. Linux之awk:按照字符或列进行筛选与计算列值 条件动作

    1 语法 awk '条件1{动作1} 条件2{动作2}...'文件名条件(Pattern):一般使用关系表达式作为条件--x > 10判断变量x是否大于10 动作(Action):格式化输出流程 ...

  3. linux代码行数统计工具,统计代码行数工具 用golang实现

    首先:修改conf文件,配置要查找什么后缀的文件代码行数 使用方法:countcodeliine filename or nothing(计算可执行程序所在目录) 实现功能: 1,统计代码行数 2,可 ...

  4. linux文件编码无法修改,在Linux系统中修改文本的字符编码的方法

    正如我们所知道的那样,电脑只能够处理低级的二进制值,并不能直接处理字符.当一个文本文件被存储时,文件中的每一个字符都被映射成二进制值,实际存储在硬盘中的正是这些"二进制值".之后当 ...

  5. linux中sed -i命令修改文件内容、在文件中插入行、删除文件中删除行

    文章目录 0.sed -i与sed 1.修改文件内容 2.在文件中插入行 3.在文件中删除行 4.使用find查找文件,并用 | xargs传输文件名给sed命令 0.sed -i与sed sed - ...

  6. 【mongodb】比较符及修改器

    MongoDB-比较符及修改器 数学比较符 $lt 小于 $lte 小于等于 $gt 大于 $gte 大于等于 $eq 等于 $ne 不等于 所有数据 > db.stutent.find() } ...

  7. Linux之Sed详解

    1.Sed功能与语法结构 Sed是Stream Editor(流编辑器)缩写,是操作.过滤和转换文本内容的强大工具.常用功能有替换.删除.新增.选取特定行等功能. 处理时,把当前处理的行存储在临时缓冲 ...

  8. 3dsmax怎么添加uv坐标_3dmax缺少贴图坐标怎么添加uvmap修改器

    回答:如何使用3D Max制作足球贴图步骤方法: 首先使用脚本创建一个足球(工程文件 ). 1.把足球隐藏起来,然后创建一个Box. 2.展开这个Box的UVmap.然后在二维程序绘制它. 3.然后再 ...

  9. C/C++植物大战僵尸之CE找基址+修改器制作(基础版)

    思路: 每个程序打开后他们的数据的内存地址都会改变,但他们的静态基址和偏移不会变 关于获取的是静态基址,所以就算是关闭了游戏,再开启动,地址也是不变的也可以修改 所以我们用CE找到他的静态地址和偏移地 ...

最新文章

  1. LeetCode简单题之交替合并字符串
  2. java计算正方形_在地图计算圆的外接正方形,并返回左上顶点和右下顶点(java、javascript)...
  3. 谷歌公布GSoC 2020 暑期代码项目名单,200个开源项目30个新增
  4. javascript:面向对象编程基础:多态
  5. 返回数组个数Java_用java实现返回一个整数数组中最大数组的和
  6. [EDA] 给出一个状态机,请把它的组合进程分为2个,分别命名为COM1和COM2,其中:COM1实现对外的控制信号输出,COM2实现状态译码。
  7. CSS动画示例(上一篇是CSS过渡…)
  8. 比较两种php调用Java对象的方法
  9. aurora 初学页面元素
  10. python统计字典里面value出现的次数_python 统计list中各个元素出现的次数的几种方法...
  11. 人人都应该学习并成为优秀的产品经理,因为你要为《你自己》这个产品负责到底
  12. 调研分析:全球与中国汽车后置摄像头模组市场现状及未来发展趋势
  13. 教材推荐 PRML_模式识别与机器学习
  14. CMYK与RGB参数转换公式及转换方法
  15. TMS320C6748_PWM_ECAP
  16. c语言1GB转成B,2018职称计算机考试WPS_Office精选习题9
  17. widowns上从chrome上抓取图片
  18. python自学难吗?零基础学python难吗?
  19. “早知道这些我的公司就不会死”系列(二):Cohort Analysis
  20. Grenander.Software.Workshop.LoudSpeaker.Lab.v3.1.3 1CD(专业级的音箱设计软件)

热门文章

  1. [机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)
  2. Js/Jquery获取iframe中的元素 在Iframe中获取父窗体的元素方法
  3. 使用Spring进行面向切面编程(AOP)---讲解+代码
  4. 最小二乘法普通定义法证明
  5. 华为固件解包工具linux,华为解包工具官方下载
  6. 雷达多普勒频率计算公式_雷达系统的用途、分类,影响雷达性能的关键要素
  7. css家用电器,家用电器
  8. 从github下载项目并导入eclipse
  9. Kettle7 java 远程执行Trans/Job
  10. 机器学习算法在自动驾驶领域的应用大盘点!