sed是一种流编辑器,处理时会把当前处理的行存储在临时缓冲区中(模式空间oattern space),接着用sed命令处理缓冲区中的内容,处理完成后把缓冲区的内容输出到屏幕,接着处理下一行,这样不断重复直到文件末。除非使用了-i参数进行写入,否则文件本身内容并没有改变。

使用语法:  sed [-nefri] 'command' file

常用选项:

  -n∶使用安静(silent)模式,在一般sed的用法中,所有来自STDIN的数据一般都会被输出到屏幕,加上-n参数则只有经过sed特殊处理的行才会被输出

  -e∶直接在指令列模式上进行 sed 的动作编辑

  -f∶直接将sed的动作写在一个文件内, -f filename则可以执行filename内的sed动作

  -r∶支持延伸型正规表示法的语法(默认是基础正规表示法语法)

  -i∶直接修改读取的文件内容,而不是由屏幕输出

常用命令:
  a:新增行,a的后面可以接字串,这些字串会在当前行的下一行出现

  i:插入行,i的后面可以接字串,这些字串会在当前行的上一行出现

  d:删除行,通常不接任何参数,直接删除地址表示的行

  c:替换行, c 的后面可以接字符串,这些字符串会替换 n1,n2 之间的行

  s:替换字符串,通常这个s的动作可以搭配正规表示法,例如 1,20s/old/new/g 就是啦!

  p:打印,即将选择的内容输出,通常p会与参数sed -n一起搭配

创建一个文件a.txt,一共3行,每一行的内容分别为hello 1、hello 2、hello 3

1.新增行a,在指定行之后新增,不指定行则在每一行后面新增

[root@oldboy ~]# sed '2a a by 2' a.txt
hello 1
hello 2
a by 2
hello 3

2.插入行i,在指定行之前插入,不指定行则在每一行前面都插入

[root@oldboy ~]# sed '2i i by 2' a.txt
hello 1
i by 2
hello 2
hello 3

3.删除行d,删除指定行,不指定行则删除所有行

[root@oldboy ~]# sed '2,3d' a.txt
hello 1
[root@oldboy ~]# sed '$d' a.txt
hello 1
hello 2

删除指定某一行'nd',删除多行'm,nd'(包括边界行),^可表示第一行,$可表示最后一行。

4.替换行c

[root@oldboy ~]# sed '1c haha' a.txt
haha
hello 2
hello 3
[root@oldboy ~]# sed '1,2c haha' a.txt
haha
hello 3
[root@oldboy ~]# sed 'c haha' a.txt
haha
haha
haha

注意,'m,nc'会将第m和第n行(包含)整体替换为指定内容,而不指定行则会将每一行都替换为指定内容。

5.替换字符串s,替换指定行字符串,不指定行则替换所有行指定字符串

使用方法:'[m,n]s/待替换字符串/新字符串/[g]'

这三个/都是必须的,其中m和n表示行号,g表示替换行中所有符合条件的字符串,而无参数g则表示只替换行中第一个符合条件的

[root@oldboy ~]# sed '2s/l/L/' a.txt
hello 1
heLlo 2
hello 3
[root@oldboy ~]# sed '2,3s/l/L/g' a.txt
hello 1
heLLo 2
heLLo 3

6.打印p

[root@oldboy ~]# sed '2p' a.txt
hello 1
hello 2
hello 2
hello 3
[root@oldboy ~]# sed -n '2p' a.txt
hello 2

可以看到不加参数-n的时候,p命令在将文件整体输出的基础上,再输出以便sed处理的行,而加上参数-n则只会输出经过sed处理过的行。

7.-i参数修改文件内容

上述6个命令均是对输出到屏幕上的内容进行处理,而文件本身内容并没有修改,而使用-i参数可以将修改保存到文件。

[root@oldboy ~]# sed 's/h/H/g' a.txt
Hello 1
Hello 2
Hello 3
[root@oldboy ~]# cat a.txt
hello 1
hello 2
hello 3
[root@oldboy ~]# sed -i 's/h/H/g' a.txt
[root@oldboy ~]# cat a.txt
Hello 1
Hello 2
Hello 3

转载于:https://www.cnblogs.com/Forever77/p/10660029.html

linux sed用法相关推荐

  1. linux中sed的基本用法,linux sed用法

    一.定义 sed 流编辑器,每次从输入中读取一行,用提供的编辑器命令匹配数据.按命令中指定的方式修改流中的数据,然后将生成的数据输出到STDOUT,在流编辑器将所 有命令与一行数据进行匹配后,它会读取 ...

  2. Linux sed命令高级用法精讲

    <Linux sed用法详解>一节给大家介绍了如何用 sed 命令的基本功能处理文本中的数据,所涵盖的知识点,可以满足日常大多数文本编辑需求.本节将介绍 sed 提供的一些高级功能,这些功 ...

  3. Linux 脚本执行遇到错误时中止,shell 文件内容替换 sed用法

    Linux 脚本执行遇到错误时中止, shell 脚本中 : set -x 是开启,   set +x是关闭  , set -e  表示有报错即退出, set  +e  表示关闭这种设置.  set ...

  4. 【githubshare】Linux sed 命令行常用汇总:useful-sed,收集了 sed 命令行的诸多常见用法,可用于快速处理文本文件

    Linux sed 命令行常用汇总:useful-sed,收集了 sed 命令行的诸多常见用法,可用于快速处理文本文件. 仓库内提供了不少示例,如输出文件首行内容,正则匹配替换文本内容.删除空文件.删 ...

  5. Linux sed工具用法

    一.sed用法 语法: sed [-nefr] [动作] 作用: 以行为单位的新增/删除/修改/插入/替换等功能,bash脚本中常用.sed功能强大,主要体现在[动作]的指定 选项与参数: -n :只 ...

  6. linux sed命令_Linux sed命令用法与示例

    linux sed命令 Sed, short for Stream EDitor, is a command that is used to perform text transformations ...

  7. linux awk语法格式,Awk是什么?一文带运维小白快速掌握Linux Awk用法

    原标题:Awk是什么?一文带运维小白快速掌握Linux Awk用法 作者:a8 Awk.sed与grep,俗称Linux下的三剑客,它们之间有很多相似点,但是同样也各有各的特色,相似的地方是它们都可以 ...

  8. linux sed 选取,linux sed 替换(整行替换,部分替换)、删除delete、新增add、选取...

    sed命令行格式为: sed [-nefri] 'command' 输入文本 常用选项: -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上 ...

  9. learn Linux sed command

    learn Linux sed command一.参考文档:1. sed命令详解http://qifuguang.me/2015/09/21/sed%E5%91%BD%E4%BB%A4%E8%AF%A ...

最新文章

  1. android imageview 的常用属性,android imageview scaletype属性
  2. 学习前端你必须看过这几本书!
  3. 安装scala之后,命令行中输入scala报错nullpointException
  4. 62岁程序员植入逻辑炸弹, 面临10年监禁和25万美元罚款
  5. PHP中常见的提示对照表
  6. maven jpa_使用Hibernate 4,JPA和Maven的架构创建脚本
  7. springboot 单测加入参数_spring-boot-单元测试参数数
  8. sqli-lab--writeup(7~10)文件输出,时间布尔盲注
  9. IBM AIX RISC System/6000 Error: 110: Media surface error错误处理
  10. shell里写个简单循环
  11. 将excel中的数据导入到oracle数据库中
  12. 504.七进制数(力扣leetcode) 博主可答疑该问题
  13. 对立志成为DBA的人的几点建议
  14. ADB修改mumu模拟器分辨率
  15. iOS好用的第三方框架/插件
  16. 实验2《MySQL数据库原理与应用》
  17. 苹果账号 协议、税务和银行业务填写教程
  18. 万字长文带你 搞定 linux BT 宝塔面板 之外网上快速搭建苹果CMS电影网站
  19. python post请求传body参数,报参数错误解决方案——菜鸟的笨拙排雷之路
  20. 字符(字符数组)越界

热门文章

  1. java 防御编程_用Java编程。实现两个人对决。有血量有防御。有攻击力
  2. java+io+scanner_Java知识点总结(JavaIO- Scanner类 )
  3. esxi命令关机虚拟机_虚拟机镜像使用说明
  4. sqlserver2008_是时候挥别 SQL Server 2008 了
  5. 牛人整理的统计学教材
  6. oracle vm 加大存储,Oracle VM VirtualBox下ubuntu虚拟机存储空间不够解决方案
  7. 系统学习数字图像处理之频域滤波
  8. DSP之有限字长效应
  9. 计算机设计类自我诊断意见,汽车故障自我诊断.doc
  10. 【汇编语言】开发过程