一、sed命令解析

1、sed工具概述

Stream  EDitor,流式编辑器

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

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

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

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 'c 123456' file.txt                        #将所有行内容替换为123456
sed '/IPADDR/c IPADDR=10.0.0.0' file.txt       #筛选IPADDR关键字的行,替换
sed '/#/c fileroot' file.txt                   #替换包含#号的行替换
sed '3c xxxxx' 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/i abc' test.txt           #在包含aaa的行前插入单行文本
sed '/aaa/i abc\n###' test.txt      #在包含aaa的行前插入2行文本,多行需要加换行符\n
注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)

3、行后追加(a)

sed '2a ######' test.txt            #在第2行后追加单行文本
sed '/aaa/a abc' test.txt           #在包含aaa的行后追加单行文本
sed '/aaa/a abc\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 'w copy_test.txt' test.txt        #将test文件所有内容另存为一个新文件
sed '/AAA/w AAA_test.txt' test.txt    #将test文件中包含AAA的行另存为新的文件
sed '2,3w line.txt' test.txt          #将test文件的2-3行另存为新的文件

shell中sed命令用法相关推荐

  1. shell中sed命令的用法

    sed (stream editor)流编辑器也是linux中的一条命令,在shell中经常需要用到的非交互式修改文件内容的命令.sed处理文本是按行处理,也就是读一行处理一行. sed的命令基本格式 ...

  2. shell中test命令用法详解

    1) 与文件检测相关的 test 选项 表1:test 文件检测相关选项列表 文件类型判断 选 项 作 用 -b filename 判断文件是否存在,并且是否为块设备文件. -c filename 判 ...

  3. shell中的命令用法(cut)

    一:截取命令cut cut:连接文件并打印到标准输出设备上 补充说明: cut命令 用来显示行中的指定部分,删除文件中指定字段.cut经常用来显示文件的内容,类似于下的type命令. 说明:该命令有两 ...

  4. linux中替换命令详解,linux中sed命令字符串替换的用法详解

    Linux系统中sed命令可以将字符串批量替换,省去了很多麻烦,下面由学习啦小编为大家整理了linux系统中sed命令字符串替换的用法详解,希望对大家有帮助! linux中sed命令字符串替换的用法详 ...

  5. 批量修改linux换行格式,linux中sed命令批量修改

    sed命令下批量替换文件内容 格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 文件名 -i 表示inplace edit,就地修改文件 ...

  6. Linux中sed命令使用大全

    Linux中sed命令使用大全 sed编辑器是一种流式编辑器,与常见的交互式文本编辑器相反,交互式文本编辑器比如vim,可以通过键盘来交互式插入,删除文本,替换文本,流试编辑器会在编辑器处理数据之前预 ...

  7. repo命令添加bin_Linux shell中getopts命令学习--实现一个添加yum源的脚本

    这是本人第一次写博客,之前从一些开源技术网站上看到不少大牛和前辈们的文章,从中学习受益.本着开源界的奉献和学习精神,觉得有必要将自己的学习成果拿出来与大家一起交流分享,既当作是一种自我学习的总结也可能 ...

  8. Android中am命令用法详解

    Android中am命令用法 位于frameworks/base/cmds/pm am命令作用:管理Activity usage: am [start|broadcast|instrument|pro ...

  9. shell中expect的用法

    shell中expect的用法 expect一般用于实现用脚本来自动远程登录,对远程机器执行相关操作 测试机上的expect目录一般在/usr/bin/expect路径 下面是从网上查询的用法总结: ...

最新文章

  1. 从ReentrantLock的实现看AQS的原理及应用
  2. 那些学校计算机招不满,那些招不满人的985院校,请留意!
  3. mysql命令使用2
  4. 中国拖拉机市场情况分析与发展趋势预测分析报告2022-2028年版
  5. Nacos部署中的一些常见问题汇总
  6. Github排序(转载)
  7. day30 java的IO流(3)
  8. php 的cookie设置时间,php cookie时间设置的方法
  9. VMware Fusion Pro for Mac虚拟机v12.2.0(18760249)中文版
  10. ClamAV学习【6】—— cli_load函数浏览
  11. 4W字全面解读数据中台、数据仓库和数据湖
  12. 猿创征文|国产数据库之OceanBase详解安装和使用
  13. JeecgBoot 3.4.3-GA 版本发布,开源免费的企业级低代码平台
  14. 微信小视频显示服务器正在升级,更新微信版本后 朋友圈小视频提示显示录制时间太短的解决办法...
  15. 既然是豆腐心,何必刀子嘴?
  16. 计算机职业生涯规划书图文并茂,计算机职业生涯规划书范文
  17. python异常处理输入不是整数_【Python】异常处理
  18. 百度地图SDK,报167错误,经纬度定位是4.9E-324的解决办法
  19. 184-199-mysql-高级篇-日志与备份篇
  20. 英国HAWKER叉车蓄电池48V360AH/3PzS360 林德叉车R14电池霍克电瓶

热门文章

  1. 三维电子沙盘虚拟现实数字沙盘元宇宙大数据人工智能无人机倾斜摄影三维全景建模第15课
  2. 联想小新air14怎么取消开盖开机
  3. 2023.6.14每日一题
  4. 标准输入/输出和重定向
  5. SDUT OJ 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
  6. 7-12 秀恩爱分得快 (25 分)
  7. 财通证券分析报告(0608)
  8. P3868 [TJOI2009]猜数字
  9. 诺基亚x6怎么打开位置服务器,诺基亚X6的gps定位很慢以及怎么关闭闪光灯的问题...
  10. 任务计划自动备份文件或文件夹且以当前日期命名