sed命令

  Linux文本处理三剑客 之 sed
  sed stream EDite
  作为行编辑器,对文本进行编辑(以行为单位进行编辑)
  注意:sed编辑文件,却不改变原文件;

sed的工作原理:

  指定一个文本文件,依次读取文本文件中每行的内容,读取到模式空间中(PATTERN SPACE),在模式空间中进行文本匹配(正则表达式),对匹配后的内容进行修改(替换、删除、打印、修改、保存等)

  用法:
  sed [OPTION]... {script-only-if-no-other-script} [input-file]...
  sed [参数] “sed自己独立的用法格式的语句”[文本文件]
  常见选项
    -n 拒绝默认显示
    -r  指定使用扩展的正则表达式
    -e script   for while if
    -f 指定脚本文件
    -l  指定文本换行的长度?
    -i  直接修改文件内容(不要使用)

地址定界方式

  1、直接匹配数值
    sed -n '5p' 文件
  2、 d~步长      
    sed -n '1~3p' 文件
  3、$  指定行尾
    sed -n '10,$p' 文件
  4、/正则/
    /正则1/,/正则2/
    sed -n '/k\{5,\}/,$p' abc
  5、0,addr
    addr 可以为 数字/$/正则表达式
    sed -n '0,/k\{5,\}/p' abc
  6、addr,+N   
    配置addr行到,addr后N行
    sed -n '/fd/,+5p' abc

  **常见命令
    p  print  打印(默认在屏幕上显示出来) 建议和 -n 一起使用;
    c  替换
      sed "/aaa/c \A" a
    d 删除
      sed "/aaa/d" a
      sed "1,3d" a
    n N  读取/添加  模式匹配到的行的下一行内容,再对其进行操作
    w 保存文件内容到一个新的文件
      sed "/patthen/w 新的文件名" 原来的文件名
      sed "/k/w /tmp/aabbcc" abc
    *s*  文本内容替换,默认替换模式空间匹配到的第一项;
      语法格式: s/pattern/字符串/
      中间的 / 可以替换为任意一个特殊字符 例如:s### s@@@ s%%%%
    g   全部
    \1 \2   和正则表达式的分组相同,实现反向应用;
    指定某一个匹配项进行修改替换
    &  调用前面(pattern)匹配的内容
      sed "s/r..t/&er/g" 文件

sed的高级应用

    模式空间  --  hold space"占有空间"

    dirname --  取出文件路径的路径部分
    basename  --  取出文件路径的文件名部分

shell_Day06的更多相关文章

随机推荐

  1. 花1分钟配置远程DEBUG,开发效率翻倍,妹子直呼绝绝子

    当把一个工程部署到远程服务器后有可能出现意想不到错误,日志打印过多或者过少都影响问题排查的效率,这个时候可以通过远程调试的方式快速定位bug,提升工作效率.本文主要讲解如何使用Idea开发工具进行远程 ...

  2. JAVA虚拟机14 类加载器

    1.简介 Java虚拟机设计团队有意把类加载阶段中的"通过一个类的全限定名来获取描述该类的二进制字节流"这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的 ...

  3. The Missing Semester - 第二讲 学习笔记

    第二讲 Shell 工具和脚本 课程视频地址: https://www.bilibili.com/video/BV1Vv411v7FR 本机学习使用平台:虚拟机ubuntu18.04.6 主题一:Sh ...

  4. ES6的Set详解

    数组去重 let arr = [ 1,2,3,4,5,3,2 ] // 数组去重 // 方法一 let newArr = [new Set(arr)] console.log(newArr); // ...

  5. 修改ctags让fzf.vim插件显示C,C++方法声明的标签

    背景 在 vim 中使用 fzf.vim 插件可以进行方便的搜索文件, 源码TAG, GIT 记录等, 最近抽空看了下 BTags 命令在 c, c++ 文件中, 无法显示头文件中的函数声明 标签问题 ...

  6. JAVA 进阶 69-79

    10/20 1. 创建 媒体类型 了解父类与子类 import java.util.ArrayList; //导入包 public class sfgda { //定义容器 容器类型是DGSD这个类型 ...

  7. MVC3三层架构

    以上部分来自黑马

  8. HGAME_2023_WEB_WP_WEEK3

    Ping to the host 很明显的rce,简单测试一下发现空格,cat,:被办,且执行无回显,空格用${IFS},%09,$IFS$9等等来绕过,我们利用dnslog将执行结果外带出来,这里使 ...

  9. JavaSE基础 (全网最全知识点)

    背景介绍 java运行机理(即使编译型语言,又是解释型语言) 编译型语言(如:c语言) 源代码需要通过预编译形成可执行文件,再由系统执行该文件形成可识别的二进制文件 解释型语言 边执行边转换.源代码先 ...

  10. Linux 一次性创建多个文件

    创建多个文件,文件名数字编号是递增的,在文件名后面加上{n..m}: touch file-{1..10}.txt