当前位置: 首页 > news >正文

sed命令 学习笔记

sed 基本用法

sed : Stream EDitor 行编辑器      (全屏编辑器: vim)

sed: 默认打印模式空间  默认不编辑原文件,仅对模式空间中的数据做处理; 而后,处理结束后,将模式空间打印至屏幕

sed [optiones] 'ADDressCommand' file ...

      -n : 静默模式 不在默认显示模式空间中的内容

       -i : 直接修改原文件

       -e SECRIPT -e SECRIPT : 可以同时执行多个脚本

       -f /PATH/TO/SED_SCRIPT : 添加 "脚本文件" 到程序的运行列表

              sed -f /path/to/scripts file

       -r : 使用扩展正则表达式   ( 默认支持基本正则表达式 )


ADDress  地址表示

1 . StratLine , EndLine   比如 : 1 , 100

  $ 最后一行

  $-1 倒数第二行

2 . /RegExp/   比如 : /^root/

3 . /pattern1/ , /pattern2/      比如 : 第一次被 pattern1 匹配到的行开始, 至第一次被 pattern2 匹配到的行结束,这中间的所有行

4 . LineNumber   指定的行

5 . StartLine, +N      从 StartLine 开始, 向后的 N 行


Command:

d : 删除符合条件的行

1
2
3
4
5
[root@nono ~] # sed '5,$d' /etc/fstab       #删除 /etc/fstab 文件中的第五行到最后一行
[root@nono ~] # sed '/oot/d' /etc/fstab    #删除 /etc/fstab 文件中所有包含 oot 的行
[root@nono ~] # sed '1,+2d' /etc/fstab     #删除 /etc/fstab 文件中,第一行开始并向后两行的内容(3行)
[root@nono ~] # sed '1d' /etc/fstab          #只删除第一行
[root@nono ~] # sed '/^\//d' /etc/fstab     #删除以 / 开头的行, ^\/ '\'为转译(使用字符本身的意义)

p : 显示符合条件的行

1
[root@nono ~] # sed -n '/^\//p' /etc/fstab  #只显示以 '\' 开头的行  -n:不显示模式空间中的内容

a \string : 在指定的行后面追加新行,内容为 "string" 

1
2
[root@nono ~] # sed '/^\//a \#hello word' /etc/fstab    #在 / 开头的行下面,追加 /#hello word
[root@nono ~] # sed '/^\//a \#hello word\n\#hello linux' /etc/fstab #追加两行 \n : 换行符

i \string : 在指定的行前面追加新行,内容为 "string"  用法与 a \string 相同

r FILE : 将指定的文件的内容添加至符合条件的行处

1
2
[root@nono ~] # sed '2r /etc/issue' /etc/fstab   #在 /etc/fstab 的第二行后面,添加文件 /etc/issue 的内容
[root@nono ~] # sed '1,2r /etc/issue' /etc/fstab  #在 /etc/fstab 的第一行,第二行后面分别添加 /etc/issue 的内容

w FILE : 将地址指定的范围内的行另存至指定的文件中

1
[root@nono ~] # sed '/oot/w /tmp/oot.txt' /etc/fstab   #将 /etc/fstab 文件中包含 oot 的行,保存至 /tmp/oot.txt 文件中

s /pattern/string/修饰符 : 表示查找并替换  (默认只替换每行中第一次被模式匹配到的字符串)

         pattern : 可以使用正则表达式的元字符

         修饰符

         g : 全局替换

          i : 查找时忽略字符大小写

          s/// : s### : s@@@  作用相同 

1
2
[root@nono ~] # sed 's@/@#@g' /etc/fstab     #将 /etc/fstab 文件中的 / 替换为 # (g 全局替换)
[root@nono ~] # history | sed 's#^[[:space:]]*##'   #将 history 行首的空格删除 (可以删除多个空白字符)

练习 

  1. 删除 /etc/grub.conf 文件中行首的空白符

    sed -r 's@^[[:spapce:]]+@@g' /etc/grub.conf

  2. 删除 /etc/inittab 文件中的空白行

    sed '/^$/d' /etc/inittab

  3. 删除 /etc/inittab 文件中开头的 # 号

    sed 's@^#@@g' /etc/inittab

  4. 删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符

    sed -r 's@^#[[:space:]]+@@g' /etc/inittab

  5. 删除某文件中以空白字符后面跟 # 类的行中的开头的空白字符及#

    sed -r 's@^[[:space:]]+#@@g' /etc/inittab

  6. 取出一个文件路径的目录名称

    echo "/etc/rc.d/" | sed 's@^(/.*/)[^/]+/?@\1@g'

wKiom1eEJWmiaKnnAAAubgOhD9c398.png

本文转自   mlwzby   51CTO博客,原文链接:http://blog.51cto.com/aby028/1825600

相关文章:

  • 在linux中添加新硬盘并创建LVM组
  • [20161101]rman备份与数据文件变化7.txt
  • 揭开AS程序的外纱(五) -- 什么是面向对象的编程?
  • 需求分析详细设计概要设计说明书部分样本
  • Exchange Server 2010 部署全攻略(三)
  • 邮箱的代理发送Send as权限不生效
  • SQL Server2012新特性WITH RESULT SETS
  • innodb_buffer_pool_size大小设置
  • 转贴:Ms Sql Server 2008 集成 SP1的方法!!!
  • LVS配置文件详解及相关技巧介绍
  • Python1
  • arp命令
  • 在Spring中整合JUnit单元测试
  • 项目-团队-技术-个人(专业篇)
  • zabbix监控磁盘IO
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • css布局,左右固定中间自适应实现
  • CSS居中完全指南——构建CSS居中决策树
  • JavaScript设计模式与开发实践系列之策略模式
  • javascript数组去重/查找/插入/删除
  • LeetCode29.两数相除 JavaScript
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • SegmentFault 2015 Top Rank
  • 从0到1:PostCSS 插件开发最佳实践
  • 从tcpdump抓包看TCP/IP协议
  • 使用putty远程连接linux
  • 使用Swoole加速Laravel(正式环境中)
  • 算法系列——算法入门之递归分而治之思想的实现
  • 新书推荐|Windows黑客编程技术详解
  • 由插件封装引出的一丢丢思考
  • NLPIR智能语义技术让大数据挖掘更简单
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​io --- 处理流的核心工具​
  • #FPGA(基础知识)
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (2)(2.10) LTM telemetry
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二)Linux——Linux常用指令
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (三)Honghu Cloud云架构一定时调度平台
  • (十)c52学习之旅-定时器实验
  • (一)Dubbo快速入门、介绍、使用
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .Net 6.0 处理跨域的方式
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .netcore 获取appsettings
  • .Net环境下的缓存技术介绍
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .net连接MySQL的方法
  • .NET命名规范和开发约定
  • .net中调用windows performance记录性能信息