当前位置:   article > 正文

shell中sed命令用法_sed /c

sed /c

一、sed命令解析

1、sed工具概述

Stream  EDitor,流式编辑器

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

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

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

2、命令格式解析

主要用法:

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

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

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

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

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

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

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

常见命令选项:

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

二、常见处理操作示例

1、输出文本(p)

  1. sed -n '/^123/p' file.txt    #仅列出123开头的行
  2. sed -n '4p' file.txt #输出第4行
  3. sed -n '2,4p' file.txt #输出第2-4行
  4. sed -n 'p' file.txt #输出全部
  5. sed -n '/ab/p' file.txt #输出包含root的行
  6. sed -n '$=' file.txt #输出文件的行数
  7. sed -n '1~2p' file.txt #打印奇数行
  8. sed -n '2~2p' file.txt #打印偶数行

2、删除文本(d)

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

3、替换关键词(s)

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

4、替换行(c)

  1. sed 'c 123456' file.txt #将所有行内容替换为123456
  2. sed '/IPADDR/c IPADDR=10.0.0.0' file.txt #筛选IPADDR关键字的行,替换
  3. sed '/#/c fileroot' file.txt #替换包含#号的行替换
  4. sed '3c xxxxx' file.txt #替换第三行内容
  5. 注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)

三、sed文本块处理

1、文本块处理动作

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

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

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

a行后插入文本

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

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

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

2、行前插入(i) 

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

3、行后追加(a)

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

4、导入(r)

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

5、导出(w)

  1. sed 'w copy_test.txt' test.txt #将test文件所有内容另存为一个新文件
  2. sed '/AAA/w AAA_test.txt' test.txt #将test文件中包含AAA的行另存为新的文件
  3. sed '2,3w line.txt' test.txt #将test文件的2-3行另存为新的文件

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/323019
推荐阅读
相关标签
  

闽ICP备14008679号