【linux/shell案例实战】sed使用教程

目录

一.sed是什么

二.sed使用方法

[1.sed输出文本行(p= print)](#1.sed输出文本行(p= print))

[2.sed 删除文本行(d=delete, sun solaris不支持-i操作)](#2.sed 删除文本行(d=delete, sun solaris不支持-i操作))

3.sed增加空行

[4. sed 替换文本(s=substition)](#4. sed 替换文本(s=substition))

[5.sed 插入文本(i=insert行前插入,a=append行后插入)](#5.sed 插入文本(i=insert行前插入,a=append行后插入))


一.sed是什么

Sed(stream editor,流文件编辑器)

Sed是非交互式编辑器,默认不会修改文件,而是输出打印到屏幕处理

选项说明:

  • -i:直接修改文件内容
  • -n:安静模式,只输出被sed 处理过的内容
  • -e:指定sed动作,可以指定多个
  • -r:启用扩展正则,与其他选项一起使用需作为首选项
  • -f:直接将 sed 的命令写在一个文件内,-f filename 则可运行 filename 内的sed命令1)

二.sed使用方法

1.sed输出文本行(p= print)

|--------------------------|--------------------------------|
| 功能 | 代码 |
| 输出所有行 | sed 'lp' file/ sed -n 'p' file |
| 输出第一行 | sed -n '1p' file |
| 输出最后一行 | sed -n 'p' file | | 输出第5行到最后一行 | sed -n '5,p' file |
| 输出第4到7行 | sed -n '4,7p' file |
| 输出第4行及其后10行 | sed -n '4,+10p' file |
| 输出第2,5,7行,用分号隔离 | sed -n '2p;5p;7p' file |
| 输出以关键字ID开头的行 | sed -n '/^ID/p' file |
| 输出一对关键字之前包含的内容(需要再把标签删掉) | sed-n '/A:/,/A:/p' file |
| 输出奇数行 | sed -n 'p;n' file |
| 输出偶数行 | sed -n 'n;p' file |
| 输出以关键字LOCAL结尾的行 | sed -n '/LOCAL/p' file | | 输出文件中的行数 | sed -n '=' file |
| 输出倒数第二行 | sed -n 'x,$p' file |

2.sed 删除文本行(d=delete, sun solaris不支持-i操作)

用法同输出问题格式类似,将p换成d即可。

|-----------------|-----------------------|
| 功能 | 代码 |
| 删除第一行 | sed '1d' file |
| 删除以关键字table开头的行 | sed '/^table/d' file |
| 删除不是以数字开头的行 | sed '/^[0-9]!/d' |
| 删除所有的空行 | sed '/^$/d' |

3.sed增加空行

|------------|---------------------------|
| 功能 | 代码 |
| 在每行前面加一行空行 | sed '{x;p;x;}' file |
| 在每行前面加两行空行 | sed '{x;p;x;x;p;x;}' file |
| 在第一行前面添加空行 | sed '1{x;p;x;}' file |
| 在关键词前添加空行 | sed '/ID/{x;p;x;}' file |
| 在每行后面加一行空行 | sed 'G' file |
| 在每行后面加两行空行 | sed 'G;G' file |
| 在第一行后面添加空行 | sed '1G' file |

4. sed 替换文本(s=substition)

|------------------------|-------------------------|
| 功能 | 代码 |
| 将每行中的第1个xml替换成XML | sed 's/xml/XML/' file |
| 将第2行中第3个xml替换成XML | sed '2s/xml/XML/3' file |
| 将所有的xml替换成XML | sed 's/xml/XML/g' file |
| 将所有的xml都删除,替换成空 | sed 's/xml//g' file |
| 将所有的doc都替换成docs,&代表查找串 | sed 's/doc/&s/g' file |
| 将4-7行注释掉,行前加#号 | sed '4, 7s/^/#/g' file |
| 将4-7行解除注释,去掉行前#号 | sed '4,7s/^#//g' file |

5.sed 插入文本(i=insert行前插入,a=append行后插入)

|-------------------|--------------------|
| 功能 | 代码 |
| 在第2行之前添加文本行YY | sed '2iYY' file |
| 在第4到7行之前添加文本行YY | sed '4,7iYY' file |
| 在第2行之后添加文本行YY | sed '2aYY' file |
| 在第4到7行之后添加文本行YY | sed '4,7aYY' file |
| 在以xx开头的行之后添加文本行YY | sed '/xx/aYY' file |
| 在最后一行添加hello | sed '$aYY' file |

相关推荐
张某人的胡思乱想几秒前
windows远程ubuntu
linux·运维·ubuntu
QT 小鲜肉3 分钟前
【Linux命令大全】001.文件管理之mtoolstest命令(实操篇)
linux·运维·前端·笔记·microsoft
ocean21038 分钟前
Linux面试题图解
linux·运维·服务器·面试·职场和发展
winfreedoms11 分钟前
wsl ubuntu的基础配置
linux·ubuntu·wsl·基础配置
怎么没有名字注册了啊13 分钟前
Debian 纯命令行 安装 VMware Tools 完整无坑手册(含全报错解决 + 无版本号 / 无成功提示终极修复)
linux·运维·debian·vmwaretools
最后一个bug26 分钟前
浅显易懂的讲解MMU是如何使用4级页表把虚拟地址转化为物理地址的~
linux·服务器·开发语言·系统架构·计算机外设
Hey小孩29 分钟前
[个人总结] Linux设备驱动第三版:2.建立和运行模块-II
linux
debug 小菜鸟30 分钟前
Linux 服务器环境搭建实战:从裸机到可用生产环境(含自动化脚本)
linux·服务器·自动化
阿钱真强道31 分钟前
20 极物智能 knx-主机场景对接
linux·运维·服务器
海棠蚀omo31 分钟前
万物互联的起点:走进 Linux 网络的心脏,开启一场从零开始的底层探索之旅
linux·网络