sed (stream editor)流编辑器也是linux中的一条命令,在shell中经常需要用到的非交互式修改文件内容的命令。sed处理文本是按行处理,也就是读一行处理一行。
sed的命令基本格式是:
sed 选项 '编辑指令' 文件路径
也可以通过管道(|)传输参数给sed处理 前置命令 | sed 选项 '编辑指令'


sed的常用参数有:
-n 屏蔽默认输出;如果不加-n选项会全部输出文本满足条件的行再重复输出
-r 如果使用扩展正则,则需要添加-r选项,默认不支持扩展正则,只支持标准正则
-i 直接修改源文件;不加-i只会在屏幕临时输出不会修改源文件,一般测试过命令无误才会在脚本中使用-i选项
sed的编辑指令:

p 输出

命令 完整示例 说明
p sed -n 'p' 1.txt 输出1.txt的所有行
2p sed -n '2p' 1.txt 输出1.txt的第二行
2,5p sed -n '2,5p' 1.txt 输出1.txt的第二行到第五行
2,+5p sed -n '2,+5p' 1.txt 输出1.txt的第二行和第二行以后的5行
1~2p sed -n '1~2p' 1.txt 输出第一行,每隔两行输出一行,也就是输出奇数行
2~2p sed -n '1~2p' 1.txt 输出第二行,每隔两行输出一行,也就是输出偶数数行
/正则/p sed -n '/^[0-9]/p' 1.txt 输出1.txt以数字开头的行
$= sed -n '$=' 1.txt 输出1.txt的行数

d 删除

命令 完整示例 说明
2d sed '2d' 1.txt 删除1.txt的第二行
2,5d sed '2,5d' 1.txt 删除1.txt的第二行到第五行
2,+5d sed '2,+5d' 1.txt 删除1.txt的第二行和第二行以后的5行
$d sed '$d' 1.txt 删除1.txt的最后一行行
/正则/ sed '/^[0-9]/d' 1.txt 删除以数字开始的行
sed '/^[0-9]/!d' 1.txt 删除不是以数字开头的行
^$ sed '^$' 1.txt 删除1.txt的空行

s 替换

命令 完整示例 说明
s/old/new/ sed 's/old/new/' 1.txt 删除1.txt中每行的第一个old都替换成new
s/old/new/2 sed 's/old/new/' 1.txt 删除1.txt中每行的第二个old都替换成new
s/old/new/g sed 's/old/new/g' 1.txt 删除1.txt中每行的每一个old都替换成new
s/old// sed 's/old//' 1.txt 删除1.txt中每行的第一个old都替换成空也就是把old删除
s/old/&s/ sed 's/old/&s/' 1.txt 删除1.txt中每行的第一个old都替换成olds &代表前面查找的字符串
4,7s/^/#/ sed '4,7s/^/#/' 1.txt 删除1.txt中4-7行开头加上# 也就是批量添加注释
4,7s/^#an/an/ sed '4,7s/^#an/an/' 1.txt 删除1.txt中4-7行以#an开头的行去掉#

替换中s///可以用其他三个相同的符号代替如s### s&&& s999 都可以 这样的符号在替换路径的时候经常用到

i/a/c插入

命令 完整示例 说明
行号 i sed '2i123' 1.txt 在1.txt的第二行前面插入123
正则 i sed '/^[0-9]/i123' 1.txt 在1.txt中所有数字开头的行前面插入123
a 在行后插入 命令格式和i相同
c 替换该行 命令格式和i相同

sed高级应用

命令 完整示例 说明
行号r sed -i '2r 2.txt' 1.txt 在1.txt中第二行后面插入2.txt的内容
行号,行号r sed -i '2,5r 2.txt' 1.txt 在1.txt中第二行到第五行每行后面插入一遍2.txt的内容
/正则/r sed -i '/^[0-9]/r 2.txt' 1.txt 在1.txt中以数字开头的行后每行面插入一遍2.txt的内容
w sed '2w 3.txt' 1.txt 在1.txt中第二行导出为3.txt的内容
w sed '2,5w 3.txt' 1.txt 在1.txt中第二行到第五行导出3.txt的内容
/正则/r sed -i '/^[0-9]/w 2.txt' 1.txt 在1.txt中以数字开头的行导出为3.txt的内容

转载于:https://blog.51cto.com/13466287/2066532

shell中sed命令的用法相关推荐

  1. shell中sed命令用法

    一.sed命令解析 1.sed工具概述 Stream  EDitor,流式编辑器         - 非交互,基于模式匹配过滤及修改文本         - 逐行处理,并将结果输出到屏幕       ...

  2. linux中替换命令详解,linux中sed命令字符串替换的用法详解

    Linux系统中sed命令可以将字符串批量替换,省去了很多麻烦,下面由学习啦小编为大家整理了linux系统中sed命令字符串替换的用法详解,希望对大家有帮助! linux中sed命令字符串替换的用法详 ...

  3. 批量修改linux换行格式,linux中sed命令批量修改

    sed命令下批量替换文件内容 格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 文件名 -i 表示inplace edit,就地修改文件 ...

  4. Linux中sed命令使用大全

    Linux中sed命令使用大全 sed编辑器是一种流式编辑器,与常见的交互式文本编辑器相反,交互式文本编辑器比如vim,可以通过键盘来交互式插入,删除文本,替换文本,流试编辑器会在编辑器处理数据之前预 ...

  5. Linux中read命令的用法

    1. 简单读取 read命令接收标准输入(键盘)的输入或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中.下面是 read命令的最简单形式: bixiaopeng@bixiaop ...

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

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

  7. linux系统中ssh命令,Linux系统中SSH 命令的用法有哪些?

    今天小编要跟大家分享的文章是关于Linux系统中SSH命令的用法有哪些?一个系统管理员可能会同时管理着多台服务器,这些服务器也许会放在不同的地方.要亲自一台一台的去访问来管理它们显然不是最好的方法,通 ...

  8. repo命令添加bin_Linux shell中getopts命令学习--实现一个添加yum源的脚本

    这是本人第一次写博客,之前从一些开源技术网站上看到不少大牛和前辈们的文章,从中学习受益.本着开源界的奉献和学习精神,觉得有必要将自己的学习成果拿出来与大家一起交流分享,既当作是一种自我学习的总结也可能 ...

  9. linux只输入wc命令,Linux系统中wc命令的用法详解

    在Linux系统中,wc命令不太经常用到,只是在统计字数的时候才会使用该命令,那么下面由学习啦小编为大家整理了linux系统中wc命令的详细解释的相关知识,希望对大家有帮助! Linux系统中wc命令 ...

最新文章

  1. vPower系列1: vMotion-没有vMotion,虚拟化只是玩具
  2. linux c ping实现
  3. Codeforces 920D Tanks (看题解)
  4. happy card 完全背包dp
  5. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170331
  6. webpack图解-学习笔记
  7. Asp.net操作数据库方法
  8. 转 jquery插件--241个jquery插件—jquery插件大全
  9. 几级工作台做石头高墙_创造与魔法:建筑新手入门攻略,家园建材怎么做
  10. 不定宽高的div如何垂直居中
  11. django默认缓存是多大_半个月搞定Django绝不是空话
  12. jQuery UI:Datepicker将年份范围下拉至100年
  13. httpclient java 异步_Java的异步HttpClient
  14. [luogu P4197] Peaks 解题报告(在线:kruskal重构树+主席树 离线:主席树+线段树合并)...
  15. 如何防止CSRF攻击?
  16. java语言将一个字符串集合按GBK编码(简体中文按拼音顺序)排序
  17. 安装pytorch详细教程
  18. bzoj3144 切糕
  19. 使用 ThreeJS 还原「流浪气球」
  20. 日本SUPER DELIVERY电商使用虚拟信用卡海淘购物攻略

热门文章

  1. 基于分类任务的信号(EEG)处理--代码分步解析
  2. seaborn系列 (2) | 散点图scatterplot()
  3. [UE4蓝图教程]蓝图入门之蓝图通信机制入门
  4. 2021年《环球科学》十大科学新闻:“天宫”空间站、火星探索位列前二
  5. 马斯克的火箭又炸了,这次可能怪美国宇航管理局:因督导员迟到,星舰原型SN11被迫在浓雾中发射...
  6. 真正的中台价值,「炒作」之后才被看见
  7. CNCC技术论坛 | 面向人工智能芯片的编程语言和编译器
  8. 只需2.5W功耗,就能达到5TOPS算力!地平线新一代AIoT芯片「旭日3」发布
  9. 最快捷的Linux命令查询工具来了:「我该怎么做XX」,一句话自动返回操作指南...
  10. 百度推出LinearDesign,全球首个mRNA疫苗不稳定性解决方案,仅需16分钟