博客
关于我
linux环境sed命令实例学习
阅读量:798 次
发布时间:2019-03-24

本文共 1652 字,大约阅读时间需要 5 分钟。

SED命令简介

SED(Stream Editor)被称为流编辑器,是Linux命令环境中“三剑客”之一,功能强大,能够根据命令处理数据流中的数据。命令可以在命令行中执行,也可以从文本文件中读取。

SED的工作流程如下:

  • 一次从输入中读取一行数据
  • 根据提供的编辑命令匹配数据 3.按照命令修改数据 4.将修改后的数据输出到标准输出
  • 所有命令处理完一行数据后,SED会读取下一行数据重复上述过程,直到处理完所有数据后终止。

    必备知识

    正则表达式是SED命令的核心,是描述匹配规则的语言。掌握正则表达式是使用SED的关键。

    测试环境

    CentOS 7.x

    具体实例

    以下实例来自网络整理,仅供学习参考,实际操作需根据不同文本文件环境进行调整。

    打印

  • 打印第一行

    sed -n '1p' passwd

  • 打印最后一行

    sed -n '$p' passwd

  • 打印第三行

    sed -n '3p' passwd

  • 打印第三行到第八行

    sed -n '3,8p' passwd

  • 打印第三行和第5行

    sed -n '3p;5p' passwd

  • 打印第三行和第五号到第八行

    sed -n '3p;5,8p' passwd

  • 打印奇数行

    sed -n 'p;n' passwd

  • 打印偶数行

    sed -n 'n;p' passwd

  • 打印每行3次

    sed 'p;p' passwd
    sed -n 'p;p;p' passwd

  • 打印以mail开始的行

    sed -n '/^mail/p' passwd

  • 删除

  • 删除空白行(打印非空行)

    sed '/^$/d' passwd
    grep -v "^$" passwd
    awk '{if($0!="") print}' passwd
    awk '{if(length!=0) print}' passwd
    cat passwd | tr -s '\n'

  • 删除第二行

    sed '2d' passwd

  • 删除第二行到第五行

    sed '2,5d' passwd

  • 删除第二行和第五行到第八行

    sed '2d;5,8d' passwd

  • 删除最后一行

    sed '$d' passwd

  • 删除奇数行

    sed '1d;n;d' passwd
    sed '1~2d' passwd

  • 删除偶数行

    sed '2d;n;d' passwd
    sed '2~2d' passwd

  • 替换

  • 用制表符替换文件中的空格

    sed -r 's/ /\t/g' passwd

  • 把所有小写字母用括号括起来

    sed 's/[a-z]/(&)/g' passwd
    (用&代表匹配到的字母)

  • 将格式2018/12/31换成2018-12-31

    echo "2018/12/31" | sed 's#/#-#g'

  • 将文件中所有的root单词替换成大写的ROOT

    sed 's/\<root\>/ROOT/g' passwd

  • 交换(替换思想)

  • 交换每行的第一个字符和第二个单词

    sed -r 's/^(.)([^a-Z]*)([a-Z]+)([^a-Z]+)([a-Z]+)/\5\2\3\4\1/' /etc/passwd

  • 交换每行的第一个单词和最后一个单词

    sed -r 's/([^a-Z]*)([a-Z]+)([^a-Z]+)(.*)([^a-Z]+)([a-Z]+)/\1\6\3\4\5\2/' passwd

  • 交换每行的倒数第二个单词和最后一个单词

    sed -r 's/([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]*)$/\1\4\3\2\5/' passwd

  • 插入(i\,a\)

  • 在第一行上插入

    sed '1i at the top' passwd

  • 在匹配行上插入

    sed '/^the/i I am here' passwd

  • 在第二行下面插入

    sed '2a I am here' passwd

  • 在最后一行下面插入

    sed '$a at the bottom' passwd

  • 转载地址:http://foyuk.baihongyu.com/

    你可能感兴趣的文章
    Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
    查看>>
    MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
    查看>>
    mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
    查看>>
    mysql中出现Unit mysql.service could not be found 的解决方法
    查看>>
    mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
    查看>>
    Mysql中各类锁的机制图文详细解析(全)
    查看>>
    MySQL中地理位置数据扩展geometry的使用心得
    查看>>
    Mysql中存储引擎简介、修改、查询、选择
    查看>>
    Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
    查看>>
    mysql中实现rownum,对结果进行排序
    查看>>
    mysql中对于数据库的基本操作
    查看>>
    Mysql中常用函数的使用示例
    查看>>
    MySql中怎样使用case-when实现判断查询结果返回
    查看>>
    Mysql中怎样使用update更新某列的数据减去指定值
    查看>>
    Mysql中怎样设置指定ip远程访问连接
    查看>>
    mysql中数据表的基本操作很难嘛,由这个实验来带你从头走一遍
    查看>>
    Mysql中文乱码问题完美解决方案
    查看>>
    mysql中的 +号 和 CONCAT(str1,str2,...)
    查看>>
    Mysql中的 IFNULL 函数的详解
    查看>>
    mysql中的collate关键字是什么意思?
    查看>>