• Linux:sed


    【参考文章】:shell中sed命令的用法

    【参考文章】:SED 简明教程

    1. 简述

      sed是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用。

      执行命令时,一次处理一行内容,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。

      sed命令处理时只会改变缓冲区中文本的副本,如果想要直接编辑原文件,可以使用 -i  选项或者将结果重定向到新的文件中。

    2. 用法

      sed  [选项]  动作 [文件路径]

      -n:取消自动打印模式;

      -i :直接修改读取的内容并写入源文件,并且不会输出到控制台;若在 -i 后面添加 .xx 后缀名,则修改前自动备份文件;

      -r :支持扩展的正则表达式(默认支持基础的正则表达式);

      -f :执行指定脚本文件中的命令;

    3. 子命令

    3.1 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开头的行去掉#

    3.2  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相同

    3.3 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的空行

    3.4 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的行数
  • 相关阅读:
    JavaScript概述
    JavaScript概述
    python语法基础
    python 网络编程
    python 日志模块
    python 异常处理
    python tricks
    记录_省赛(一)
    异或加密算法
    三目条件运算符
  • 原文地址:https://www.cnblogs.com/virgosnail/p/11945463.html
Copyright © 2020-2023  润新知