Sed
Sed是一个强大的文本处理工具
可以采用正则匹配,对文本进行插入删除修改等操作
Sed处理的时候,一次处理一行,每一次把当前处理的存放在临时缓冲区,处理完后输出缓冲区内容到屏幕,然后把下一行读入缓冲区,如此重复,直到结尾。

1、命令格式和参数
sed [-nefr] [动作] 文件
参数:
-n 安静模式,在sed处理的时候,所有来自STDIN的数据都会被输出到终端,加上-n会只输出处理的哪行
-e 直接在命令列上进行sed动作编辑
-f 直接将sed的动作写在文件内
-r sed动作支持延伸的正则表达(默认只是基础正则)
-i 直接修改文件内容(慎用,尤其是用系统文件做练习的时候)

动作:
a append:增加,在当前行的下一行增加
c   :取代,取代n1到n2之间的行
d delete:删除
i 插入,目前行的上一行插入
p 打印,常常与-n使用
s 取代,s/old/new/g

2、基础用法详解
(1)第一行之后添加一行

  1. [root@localhost ~]# nl file.txt | sed "1a add text"

  2. 1  wtmp begins Mon Feb 24 14:26:08 2014

  3. add text

  4. 2  192.168.0.1

  5. 3  162.12.0.123

  6. 4  this is the last line

(2)第一行之前添加一行 copy

  1. [root@localhost ~]# nl file.txt | sed "1i add text"

  2. add text

  3. 1  wtmp begins Mon Feb 24 14:26:08 2014

  4. 2  192.168.0.1

  5. 3  162.12.0.123

  6. 4  this is the last line

(3)删除第2,3行

  1. [root@localhost ~]# nl file.txt | sed "2,3d"

  2. 1  wtmp begins Mon Feb 24 14:26:08 2014

  3. 4  this is the last line

(4)打印第2,3行 copy

  1. [root@localhost ~]# sed -n "2,3p" file.txt

  2. 192.168.0.1

  3. 162.12.0.123

这里要提到的是,尽量使用-n,不然会出现这样的结果 copy

  1. [root@localhost ~]# sed "2,3p" file.txt

  2. wtmp begins Mon Feb 24 14:26:08 2014

  3. 192.168.0.1

  4. 192.168.0.1

  5. 162.12.0.123

  6. 162.12.0.123

  7. this is the last line

(5)把168换成169
先看源文件 copy

  1. [root@localhost ~]# cat file.txt

  2. wtmp begins Mon Feb 24 14:26:08 2014

  3. 192.168.0.1

  4. 162.12.0.123

  5. this is the last line

处理后 copy

  1. [root@localhost ~]# sed "s/168/169/g" file.txt

  2. wtmp begins Mon Feb 24 14:26:08 2014

  3. 192.169.0.1

  4. 162.12.0.123

  5. this is the last line

(6)插入多行

  1. [root@localhost ~]# nl file.txt | sed "2afirst\nsecond" file.txt

  2. wtmp begins Mon Feb 24 14:26:08 2014

  3. 192.168.0.1

  4. first

  5. second

  6. 162.12.0.123

  7. this is the last line

(7)匹配数据,然后进行操作
只需要在上述的基础上加上正则匹配
sed "/匹配的模式/处理的方式" file.txt 
sed "/^root/d" file.txt 对开始有root的删除
例如
匹配begin,并删除改行 copy

  1. [root@localhost ~]# nl file.txt | sed "/begin/d"

  2. 2  192.168.0.1

  3. 3  162.12.0.123

  4. 4  this is the last line

匹配123,并且把含有123的行162都替换成172 copy

  1. [root@localhost ~]# nl file.txt | sed "/123/{s/162/172/g;q}"

  2. 1  wtmp begins Mon Feb 24 14:26:08 2014

  3. 2  192.168.0.1

  4. 3  172.12.0.123

  5. 4  this is the last line

这里大括号{}里可以执行多个命令,用;隔开即可,q是退出
(8)连续编辑 -e
删除第二行,并且匹配把last替换成new

  1. <pre name="code" class="plain">[root@localhost ~]# nl file.txt | sed -e "2d" -e "s/last/new/"

  2. 1  wtmp begins Mon Feb 24 14:26:08 2014

  3. 3  162.12.0.123

  4. 4  this is the new line

(9)直接修改文件,切记不要修改系统文件 copy

  1. [root@localhost ~]# sed -i "/begin/{s/24/25/g}" file.txt

  2. [root@localhost ~]# cat file.txt

  3. wtmp begins Mon Feb 25 14:26:08 2014

  4. 192.168.0.1

  5. 162.12.0.123

  6. this is the last line

三 、一个比较有趣的例子
如何替换\n也就是把所有的行都归为一行
第一种方式 copy

  1. [root@localhost ~]# sed ':a;N;$!ba;s/\n/ /g' file.txt

  2. wtmp begins Mon Feb 25 14:26:08 2014 192.168.0.1 162.12.0.123 this is the last line

第二种方式opy

  1. [root@localhost ~]# tr "\n" " " < file.txt

  2. wtmp begins Mon Feb 25 14:26:08 2014 192.168.0.1 162.12.0.123 this is the last line last linen

转载于:https://blog.51cto.com/jschu/2120833

三剑客之sed常用操作相关推荐

  1. linux中sed切割方法,Linux中Sed常用操作

    1. Sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区 ...

  2. dataframe常用操作_【Data Mining】机器学习三剑客之Pandas常用算法总结上

    一.前言 看pandas之前我建议先看我的numpy总结,效果更佳. SEU-AI蜗牛车:[Data Mining]机器学习三剑客之Numpy常用算法总结​zhuanlan.zhihu.com 可以 ...

  3. sed 删除某一行_Linux常用命令三剑客之sed,您真的会用吗?

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 本文主要讲解Linux系统中的sed命令的作用与使用案 ...

  4. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  5. 三剑客之 sed详解

      sed 作者:Jack.X 归档:学习笔记 2017/4/13 三剑客之sed 第1章 sed详解: 1.1 sed介绍: sed是linux命令中三剑客的老二,sed命令是操作.过滤和转换文本内 ...

  6. sed 插入多行_文本三剑客之sed

    文本三剑客之sed sed介绍 sed 简介 sed 流编辑器.sed的全称:Stream EDitor 简称sed 是个流编辑器,sed是一个行编辑器.首先它是个流编辑器是实现文本流编辑的,所谓行编 ...

  7. 9、Linux文本处理三剑客之sed命令

    Linux 用于处理文本数据的三剑客,分别为 grep 命令.awk 命令和 sed 命令,再加上正则表达式,就可以处理文本文件中各种常见的数据需求了.一般来说,grep 命令倾向于查找,sed 命令 ...

  8. 文本处理三剑客之 sed 流编辑器(基础部分)

    文本处理三剑客之 sed 流编辑器(基础部分) SED 即 Stream EDitor.和交互式编辑器如 vi 需要打开整个文件不同,sed 是行编辑器,每次处理一行,比较适合在脚本中进行无交互编辑, ...

  9. Shell ❀ 三剑客 - Grep + Sed + Awk

    文章目录 八.三剑客 - Grep + Sed + Awk 1.Grep - 过滤 1.1 常用grep参数 1.2 使用方法 2.Sed - 行匹配 2.1 执行原理 2.2 常见语法 2.3 使用 ...

最新文章

  1. SCCM 2012系列9 补丁分发上
  2. 声明一个图书类(Java)
  3. BaiduSitemap
  4. linux then命令不识别,Linux终端提示符(prompt)不如期生效的原因分析与解决
  5. 如何在 C# 8 中使用 Index 和 Range
  6. oracle with as用法_as的用法那么多,你知道多少?
  7. (课堂画图)毕业论文管理系统
  8. servlet输出中文乱码
  9. PR2019 (五)几种视频转场特效
  10. 802.11a/b/g/n/ac速率表
  11. 〖Python 数据库开发实战 - Python与MySQL交互篇⑭〗- 项目实战 - 实现新闻管理 - 审批新闻 功能
  12. 理科生浪漫java表白代码_数学公式表白-2020理科生专属浪漫表白句子大全
  13. ios input 无法自动聚焦拉起手机键盘
  14. C4D演绎中国风设计这波电商BANNER背景素材,高级了
  15. 实现一个简单的计算器,输入一个包含圆括号、加减乘除、求余等符号组成的算术表达式字符串,输出该算术表达式的值
  16. css中用rgba设置颜色三光色
  17. 吞噬星空是鸿蒙三部曲吗,星辰变吞噬星空盘龙三部有什么关系
  18. 速卖通关键词挖掘工具_速卖通长尾词采集新增断续功能免费体验7天
  19. 【每天一个Python小知识】NumPy中的np.where
  20. scheduler performance testing

热门文章

  1. 大数据安全分析“架构”
  2. 《数据库原理与应用(第3版)》——小结
  3. JPA在MySQL中自动建表
  4. iOS工程引入ios-charts-master
  5. 简单帐表插件开发示例分享
  6. html鼠标标控制,html 鼠标 css 控制
  7. 理解 | 理解a: float=10
  8. MySQL sql99语法—自连接
  9. ZkServer服务启动的逻辑-QuorumPeer.start
  10. MyBatis 源码解读-objectFactoryElement()、objectWrapperFactoryElement()