• 简介
  • 使用语法
    • 常用选项option可选
    • 常用命令command
  • 实例
    • a 追加

      • 追加指定单行
      • 范围匹配追加
      • 追加指定正则匹配行
    • i 插入
    • c 取代
      • 取代指定单行
      • 范围匹配替换
      • 正则匹配替换
    • s 替换
      • 正则表达式后向引用
    • d 删除
      • 删除指定单行
      • 范围匹配删除
      • 正则匹配删除
    • p 打印
      • 范围匹配打印
      • 正则匹配打印

简介

sed全称是:Stream EDitor,是一个很好的文件处理工具

使用语法

sed [option] 'command' file_path

常用选项option(可选)

  • -i 直接修改读取的文件内容,而不是由屏幕输出。
  • -f 直接将 sed 的动作写在一个文件内, -f filename 则可以执行filename内的sed命令;
  • -n 使用安静(silent)模式。在一般sed的用法中,所有来自stdin的内容一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来;
  • -e 直接在指令列模式上进行 sed 的动作编辑;
  • -r 让sed命令支持扩展的正则表达式(默认是基础正则表达式);

常用命令command

  • [range]a string∶append即追加字符串string, a 的后面可以接字串string(多行字符串可以用\n分隔),而这些字串将追加到每个匹配行的下一行,range表范围,可以用数字区间(n[,m])表示,也可以用正则(/pattern/)

  • [range]i string∶insert即插入字符串, a 的后面可以接字串string(多行字符串可以用\n分隔),而这些字串将追加到每个匹配行的上一行,range表范围,可以用数字区间(n[,m])表示,也可以用正则(/pattern/)

  • [range]c string∶取代, c 的后面可以接字串(多行字符串可以用\n分隔),而这些字串将替换到匹配的行,range表范围,可以用数字区间(n[,m])表示,也可以用正则(/pattern/)

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

  • [range]d∶delete即删除,删除指定范围的内容。range表范围(不指定范围表示所有内容),可以用数字区间(n[,m])表示,也可以用正则(/pattern/)

  • [range]p∶print即打印,打印出指定范围的资料。通常 p 会与参数 sed -n 一起运作。range表范围(不指定范围表示所有内容),可以用数字区间(n[,m])表示,也可以用正则(/pattern/)

实例:

假设有一个本地文件test.txt,文件内容如下:

[root@localhost ~]# cat test.txt
my name is kwin
my email address is kwinwong@hotmail.com
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end

a 追加

追加指定单行

[root@localhost ~]# sed '1a hello' test.txt
my name is kwin
hello
my email address is kwinwong@hotmail.com
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end

本例命令部分中的1表示第一行,同样的第二行写成2,第一行到第三行写成1,3,用 表示最后一行,比如2, 表示最后一行,比如2,表示第二行到最后一行中间所有的行(包含第二行和最后一行)。

范围匹配追加

[root@localhost ~]# sed '1,$a hello' test.txt
my name is kwin
hello
my email address is kwinwong@hotmail.com
hello
my blog is http://blog.csdn.net/kwinh
hello
Please contact me if you have any questions
hello
end
hello

本例表示在所有的行后面都加上”hello”字符串,从输出可以看到效果。同sed 'a hello' test.txt

追加指定正则匹配行

[root@localhost ~]# sed '/^my.*com$/a hello' test.txt
my name is kwin
my email address is kwinwong@hotmail.com
hello
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end

本例使用正则表达式匹配行,^my.*com$表示以my开头,以com结尾的行,则可以匹配到文件的”my email address is kwinwong@hotmail.com”这样,所以在该行后面增加了”hello字符串。

i 插入

同a追加,不同处是a是将字符串追击到在匹配的行的后一行,而i则是将字符串插入到匹配的行的前一行

c 取代

取代指定单行

取代第1行

[root@localhost ~]# sed '1c hello' test.txt
hello
my email address is kwinwong@hotmail.com
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end

本例命令部分中的1表示第一行,同样的第二行写成2,第一行到第三行写成1,3,用 表示最后一行,比如2, 表示最后一行,比如2,表示第二行到最后一行中间所有的行(包含第二行和最后一行)。

范围匹配替换

替换1到2行

[root@localhost ~]# sed '1,2c hello everyone' test.txt
hello everyone
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end

正则匹配替换

[root@localhost ~]# sed '/^my.*com$/c hello everyone' test.txt
my name is kwin
hello everyone
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end

s 替换

1,2表示范围(默认所有行1,$),本例将文件中的所有kwin替换成kwinwong,最后的g是global的意思,也就是全局替换,如果不加g,则只会替换范围行内的每一行的第一个kwin。

[root@localhost ~]# sed '1,2s/kwin/kwinwong/g' test.txt
my name is kwinwong
my email address is kwinwongwong@hotmail.com
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end

正则表达式后向引用

sed命令中使用()包裹的内容表示正则表达式的第n部分,序号从1开始计算,所以\1就是kwin

[root@localhost ~]# sed 's/\(kwin\)/\1wong/g' test.txt
my name is kwinwong
my email address is kwinwongwong@hotmail.com
my blog is http://blog.csdn.net/kwinwongh
Please contact me if you have any questions
end

d 删除

删除指定单行

删除第1行

[root@localhost ~]# sed '1d hello' test.txt
my email address is kwinwong@hotmail.com
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end

本例命令部分中的1表示第一行,同样的第二行写成2,第一行到第三行写成1,3,用 表示最后一行,比如2, 表示最后一行,比如2,表示第二行到最后一行中间所有的行(包含第二行和最后一行)。

范围匹配删除

删除1到2行

[root@localhost ~]# sed '1,2d hello' test.txt
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end

正则匹配删除

[root@localhost ~]# sed '/^my.*com$/d' test.txt
my name is kwin
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end

p 打印

本例在屏幕上打印第三行到最后一行的内容,p命令一般和-n选项一起使用。

范围匹配打印

[root@localhost ~]# sed '3,$p' test.txt  -n
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end

正则匹配打印

[root@localhost ~]# sed -n '/^my.*com$/p' test.txt
my email address is kwinwongwong@hotmail.com

liunx之sed命令详解相关推荐

  1. linux sed p变量,Linux sed 命令详解系列教程之各种问题解决

    本文目录: 1 sed中使用变量和变量替换的问题 2 反向引用失效问题 3 "-i"选项的文件保存问题 4 贪婪匹配问题 5 sed命令"a"和"N& ...

  2. 【转】【Linux】sed命令详解

    sed命令详解 sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space ...

  3. cut\grep\awk\sed命令详解

    cut\grep\awk\sed命令详解 1.cut命令详解及实例 (1)作用:提取文件中指定的列 语法格式:cut  选项  文件名   (2)选项作用:      -d 分隔符     按照指定的 ...

  4. LInux sed命令详解

    文章转自:http://qifuguang.me/2015/09/21/sed%E5%91%BD%E4%BB%A4%E8%AF%A6%E8%A7%A3/#comments sed命令详解 sed是st ...

  5. linux 之sed命令详解

    sed命令详解 sed是什么 sed是linux文本处理三剑客之一,全称 StreamEDitor,非常著名的行编辑器,功能十分强大. sed的工作过程 sed处理文本时每次从文件复制出来一行,放在工 ...

  6. ubuntu下sed命令详解 - Dicky - 开源中国社区

    ubuntu下sed命令详解 - Dicky - 开源中国社区 ubuntu下sed命令详解 - Dicky - 开源中国社区 ubuntu下sed命令详解     7人收藏此文章, 我要收藏 发表于 ...

  7. linux sed.写文件,Linux文件处理sed命令-linux sed命令详解-linux sed写入文件-嗨客网

    Linux文件处理sed命令详解教程 Linux sed命令使用 Linux sed 命令处理时,把当前处理的行存储在临时缓冲区中,称为 "模式空间"( oattern space ...

  8. Linux的sed命令详解大全

    Linux的sed命令详解大全 一.sed命令介绍 二.sed 的运行模式 三.sed的相关选项 四.sed基本用法 1.sed语法 2.sed的查看功能 ①查看passwd文件的第5到第8行内容 ② ...

  9. 【Linux篇】sed命令详解

    文章目录 sed命令详解 一.基本语法 二.实操案例 内部命令选项说明 命令选项说明 标志 三.sed小技巧 sed命令详解 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时 ...

最新文章

  1. Java I/O Demo
  2. 软工作业3—词频统计
  3. 【Docker】记一次docker container ping domain 和 ping ipv6地址不通问题
  4. cdh 添加jar包_使用maven下载cdh版本的大数据jar包
  5. mysql 6.2使用_2. MYSQL基本使用(2)
  6. 树-当前结点与列表页不符的处理
  7. 设计模式:模板方法模式(Template Method)
  8. 为什么要在Java的Serializable类中使用SerialVersionUID
  9. 将Jersey与Spring整合
  10. Unity3D:Graphics.BlitMultiTap方法
  11. 西安电子科技大学07级计算机学院本科生毕业照.,关于对我校2015届本科“优秀毕业生标兵”、“优秀毕业生”和“优秀学生干部”评选结果进行公示的公告...
  12. 温度补偿计算公式_基于温度压力补偿计算的燃气表计量方法与流程
  13. AtCoder Beginner Contest 175 A Rainy Season 字符串+5种情况
  14. Kafka Consumer 消费逻辑
  15. 028 《数据分析师养成宝典》读书笔记
  16. 08 网上爬取的数据如何制作成表
  17. Postman|网页调试工具
  18. w7点击计算机图标没反应,点击win7系统桌面上的图标没有反应怎么办?
  19. centos7中英文切换
  20. CISSP资料:独家笔记

热门文章

  1. python pta实验八
  2. 从cocostudio获取控件,添加回调函数
  3. Android SDK Windows 安装及环境配置教程
  4. java 基础面试练习题(易错题)
  5. Java中的IO、NIO、File、BIO、AIO详解
  6. 【文献解读 情感合成】Expressive Speech Driven Talking Avatar Synthesis with DBLSTM using 有限的情感双峰数据
  7. Arduino CapacitiveSensor 电容式触摸传感器
  8. Java基础-常见IO五种模型
  9. 特征空间之点检测(MATLAB)
  10. VBA之正则表达式(1)-- 基础篇