【介绍】

sed是一款强大的非交互式的文本编辑器,可以对文件文本进行增删改查的相关操作,本文主要是讲解以下sed的基本用法。

【常用选项】

-e

下一个参数为一个sed指令,一般只会用于同一行有多个sed的时候

-f

后面跟保存了sed指令的文件

-i

直接对内容进行修改,不加i时只是预览,并不做实际改动

-n

取消默认输出,只输出处理过的行。

【编辑命令】

a

追加·向匹配行后面插入内容

c

更改·更改匹配行的内容

i

插入·向匹配行前插入内容

d

删除·删除匹配的内容

s

替换·替换匹配到的内容

p

打印·打印匹配到的内容

=

打印匹配到的行号

n

读取下一行

r,w

读和写编辑

【命令实例】

·插入行

sed '3ahello' test.txt

在第三行后插入"hello"(新行)

sed '/123/ahello' test.txt

在内容"123"后插入"hello"(新行,每一个匹配后都添加)

sed '$ahello' test.txt

在文件最后一行后添加"hello"

sed '3ihello' test.txt

在第三行前插入"hello"(新行)<其他同上>

·更改行

sed '1chello' test.txt

将文件第一行替换为hello

sed '/123/chello' test.txt

将文件包含123的行替换为hello

sed '$chello' test.txt

将文件最后一行替换为hello

·删除行

sed '4d' test.txt

删除文件第四行

sed '1~2d' test.txt

从第一行开始,每两行删除一行(删除奇数行)

sed '1,2d' test.txt

删除1,2行

sed '1,2!d' test.txt

删除1,2之外所有的行

sed '$d' test.txt

删除最后一行

sed '/123/d' test.txt

删除匹配123的行

sed '/123/,$d' test.txt

删除匹配123的行以及后面所有行

sed '/123/,+1d' test.txt

删除匹配123的行以及后面一行

sed '/^$/d' test.txt

删除空行

sed '/123\|abc/!d' test.txt

删除不匹配123和abc的行(!表示取反)

sed '1,3{/123/d}' test.txt

删除1~3行中,匹配123的行

·替换内容

sed 's/123/abc/' test.txt

将文件中的第一个123替换为abc

sed 's/123/abc/g' test.txt

将文件中所有的123替换为abc

sed 's/123/abc/2' test.txt

将每行第二个123替换为abc

sed -n 's/123/abc/gpw test2.txt' test.txt

将每行中所有的123都替换为abc,并将替换后的内容写到test2.txt

sed '/#/s/,.*//g' test.txt

匹配所有有#的行,将','以及','以后的内容替换为空

sed 's/..$//g' test.txt

将每一行的最后两个字符替换为空,每一个'.'代表一个字符

sed 's/^#.*//' test.txt

将每一条以#开头的行都替换为空行

sed 's/^#.*//;/^$/d' test.txt

将每一条以#开头的行都去掉(去除注释行,分号做二次操作)

sed 's/^[0-9]/(&)/' test.txt 或者
sed 's/\(^[0-9]\)/(\1)/' test.txt

将每一行行首的数字加括号(&代表匹配到的内容)
左侧特殊字符需要转义,右侧不需要(\1代表匹配到的内容)

sed 's/$/&abc/' test.txt

在每一行后面添加abc字段

·打印文件中的行

sed -n '3p' test.txt

打印文件中的第三行内容

sed -n '2~3p' test.txt

从第二行开始,每三行打印一行

sed -n '$p' test.txt

打印文件最后一行

sed -n '1,3p' test.txt

打印一到三行

sed -n '3,$p' test.txt

打印第三行到最后一行

sed -n '/abc/p' test.txt

逐行读取,打印包含abc的行

sed -n '/abc/,3p' test.txt

逐行读取,打印第一次匹配abc的行一直到第三行,并将之后匹配abc的行也打印

sed -n '2,/abc/p' test.txt

打印第二行到匹配abc的行

sed -n '/abc/,$p' test.txt

打印匹配abc的行到最后一行

sed -n '/abc/,+1p' test.txt

打印匹配abc的行及其后一行

sed -n '/abc/,/123/p' test.txt

打印从匹配abc的行一直到匹配123的行

·打印文件的行号

sed -n '$=' test.txt

打印文件最后一行的行号(同wc -l)

sed -n '/error/=' test.txt

打印匹配error的行号

sed -n '/error/{=;p}' test.txt

打印匹配error的行的行号以及内容

·从文件中读取内容

sed 'r test2.txt' test1.txt

会在test1.txt文件的每一行后都追加test2.txt的内容

sed '3r test2.txt' test1.txt

在test1.txt文件的第三行后追加test2.txt的内容

sed '/123/r test2.txt' test1.txt

在test1.txt文件中匹配123的行后追加test2.txt的内容

sed '$r test2.txt' test1.txt

在test1.txt文件的最后一行插入test2.txt的内容

·向文件中写

sed -n 'w test2.txt' test1.txt

将test1.txt文件的内容写到test2.txt文件中(如果没有会创建)

sed -n '2w test2.txt' test1.txt

将test1.txt文件中的第二行内容写入到test2.txt文件中

sed -n -e '1w test2.txt' -e '$w test2.txt' test1.txt

将test1.txt文件的第一行和最后一行写入到test2.txt文件中

sed -n -e '1w test2.txt' -e '$w test3.txt' test1.txt

将test1.txt文件中的第一行写入到test2文件中;
最后一行写入到test3.txt文件中

sed -n '/abc\|123/w test2.txt' test1.txt

将test1.txt文件重匹配abc或者123的行,写入到test2文件中

sed -n '/123/,$w test2.txt' test1.txt

将test1文件中匹配123的行一直到最后一行,写入到test2文件中

sed -n '/123/,+2w test2.txt' test1.txt

将test1文件中匹配123的行和之后两行,写入到test2文件中

最新文章

  1. 鱼搜_鱼搜官网_鱼搜搜索_http://www.7yusou.com
  2. javascript Date 总结
  3. SharpGL学习笔记(十八) 解析3ds模型并显示
  4. poj 3020 最短路径覆盖 Antenna Placement
  5. 第二百零一天 how can I坚持
  6. 排序命令sort
  7. 【nginx运维基础(4)】Nginx的日志管理(日志格式与定时分割日志)
  8. Js Carousel
  9. spring mvc DispatcherServlet详解之interceptor和filter的区别
  10. Spring框架——事务处理(编程式和声明式)
  11. 个人的MySql配置总结
  12. Spring Cloud入门教程-Ribbon实现客户端负载均衡
  13. 渗透之Empire
  14. vs2012,打开早期版本窗体错误
  15. Hillstone设备管理-许可证安装
  16. 前端之html概述及基本结构
  17. 使用git将本地仓库同步到github远程仓库
  18. 001.FTP简介及相关文件
  19. Java:多线程,线程同步,synchronized关键字的用法(同步代码块、非静态同步方法、静态同步方法)
  20. iOS边练边学--介绍布局的三种方法

热门文章

  1. Java中的Runnable、Callable、Future、FutureTask的区别与示例
  2. linux 端口映射设置
  3. pytorch bert 源码解读
  4. @noi.ac - 492@ casino
  5. angularjs 自定义指令弹窗
  6. Websocket 简单对话:静态网页与pycharm对话
  7. linux用户权限管理, chmod, ln
  8. 从规则引擎到复杂事件处理(CEP)
  9. [转]vue原理简介
  10. MFC/Win32里面调用qtwebkit