当前位置:

shellsed命令用法

访客 2024-01-05 428 0

一、sed命令解析

1、sed工具概述

StreamEDitor,流式编辑器

-非交互,基于模式匹配过滤及修改文本

-逐行处理,并将结果输出到屏幕

-可实现对文本的输出、删除、替换、复制、剪切、导入、导出等操作

2、命令格式解析

主要用法:

-格式1:前置命令|sed[选项]'编辑指令'

-格式2:sed[选项]'编辑指令'文件....

条件,可以是行号或/正则/:

-行号可以使用单个数字表示单行

-或者3,5表示连续的多行

-省略条件,则默认逐行处理全部文本

-匹配正则时,需要使用//

常见命令选项:

选项释义-n屏蔽默认输出-i直接修改源文件-r支持扩展正则

二、常见处理操作示例

1、输出文本(p)

  • sed-n'/^123/p'file.txt#仅列出123开头的行
  • sed-n'4p'file.txt#输出第4行
  • sed-n'2,4p'file.txt#输出第2-4行
  • sed-n'p'file.txt#输出全部
  • sed-n'/ab/p'file.txt#输出包含root的行
  • sed-n'$='file.txt#输出文件的行数
  • sed-n'1~2p'file.txt#打印奇数行
  • sed-n'2~2p'file.txt#打印偶数行
  • 2、删除文本(d)

  • sed'2,4d'file.txt#删除第2-4行
  • sed'/ab/d'file.txt#删除所有包含ab的行
  • sed'/ab/!d'file.txt#删除不包含ab的行,!符号表示取反
  • sed'/^file/d'file.txt#删除开头为file的行
  • sed'$d'file.txt#删除文件的最后一行
  • sed'/^$/d'file.txt#删除所有空行
  • 注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)
  • 3、替换关键词(s)

  • sed's/ab/AB/'file.txt#将每行中第一个ab替换为AB
  • sed's/123/456/2'file.txt#将每行中第二个123替换为456
  • sed's/123/XXX/g'file.txt#将所有的123替换为XXX
  • sed's/123//g'file.txt#将所有的123都删除(替换成空字符串)
  • sed'6,8s/^/#/'file.txt#为6-8行加注释
  • sed's/^#\*/\*/'file.txt#去掉开头为#*的#号
  • 注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)
  • 4、替换行(c)

  • sed'c123456'file.txt#将所有行内容替换为123456
  • sed'/IPADDR/cIPADDR=10.0.0.0'file.txt#筛选IPADDR关键字的行,替换
  • sed'/#/cfileroot'file.txt#替换包含#号的行替换
  • sed'3cxxxxx'file.txt#替换第三行内容
  • 注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)
  • 三、sed文本块处理

    1、文本块处理动作

    操作符用途指令示例i行前插入文本

    2iYY在第2行之前添加文本行“YY”

    4,7iYY在第4-7行的每一行前添加文本行

    a行后插入文本

    2aYY在第2行之后添加文本

    /^XX/aYY在以XX开头的行之后添加文本

    r导入指令2cYY将第2行的内容修改为"YY"w文件另存为|导出文件内容

    2、行前插入(i)

  • sed'2i######'test.txt#在第2行前插入单行文本
  • sed'/aaa/iabc'test.txt#在包含aaa的行前插入单行文本
  • sed'/aaa/iabc\n###'test.txt#在包含aaa的行前插入2行文本,多行需要加换行符\n
  • 注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)
  • 3、行后追加(a)

  • sed'2a######'test.txt#在第2行后追加单行文本
  • sed'/aaa/aabc'test.txt#在包含aaa的行后追加单行文本
  • sed'/aaa/aabc\n###'test.txt#在包含aaa的行后追加2行文本,多行需要加换行符\n
  • 注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)
  • 4、导入(r)

  • sed'2r/root/file.txt'test.txt#在第二行之后导入file.txt文本到test.txt文件
  • sed'r/root/file.txt'test.txt#在每一行后导入file.txt文本到test.txt文件
  • sed'/AAA/r/root/file.txt'test.txt#在包含AAA的行后导入file.txt文本到test.txt文件
  • 注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)
  • 5、导出(w)

  • sed'wcopy_test.txt'test.txt#将test文件所有内容另存为一个新文件
  • sed'/AAA/wAAA_test.txt'test.txt#将test文件中包含AAA的行另存为新的文件
  • sed'2,3wline.txt'test.txt#将test文件的2-3行另存为新的文件
  • 发表评论

    • 评论列表
    还没有人评论,快来抢沙发吧~