千家信息网

sed命令细说

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,sed:工作方式:此命令也是针对文档行的一个命令。他的工作方式同grep一样,工作目标是文档中的行,一样是把文档复制到他的内存中进行操作,只要用户不保存,就不会改变原文件。磁盘源文件=A地-->复制到
千家信息网最后更新 2026年10月31日sed命令细说

sed:

工作方式:此命令也是针对文档行的一个命令。他的工作方式同grep一样,工作目标是文档中的行,一样是把文档复制到他的内存中进行操作,只要用户不保存,就不会改变原文件。

磁盘源文件=A地-->复制到内存中的源文件或部分原文件=B地--->操作、筛选或者编辑后的保存在内存中的文件=C地

常用选项:

-n:表示不再输出不符合从B地道C地的内容

-e:可以同时使用多个编辑指令对B地的内容进行编辑、筛选、造作

-f: 后边可以跟一个脚本文件,此脚本文件每行都是一个编辑命令

-r: 支持使用扩展正则表达式

-i : 表示直接对原文件进行编辑,此选项比较危险哦


地址定界:及表示我们要对那些行进行编辑

1): 不给地址,即空地址。 则表示对全文进行处理

2):单地址

#:制定行

3): 一个范围

#,#:

#。+#:

/pat1/,/part2/

4) 步进:-

1-2:表示所有的奇数行

2-2:表示所有的偶数行


sed 常用编辑选项

d : 删除 即删除"B地"的内容

sed '1,5d' /etc/fstab 表示删除1行和5行的内容

sed '/^UUID/d' /etc/fstab 表示删除以UUID开头的每一行

sed '3d' /etc/fstab 表示删除第三行

sed '1-2d' /etc/fstab 表示显示偶数行(因为奇数行被删除了)

p:表示显示"B地"的内容

sed '1~2p' /etc/fstab 表示奇数行显示两遍

sed -n '1~2p' /etc/fstab 表示只显示奇数行 -n的意思是只保留编辑的行为

a\text:指定的模式匹配到的行的后边追加"text",支持使用\n这个符号,实现多行追加

i\text:在指定的模式匹配到的行前边插入"text",支持使用\n这个符号,实现多行追加

例如: sed '5i \do it yourself' /etc/fstab (我把fstab第一行的空格删除了所以是下边的效果)

## /etc/fstab# Created by anaconda on Wed Dec 30 06:43:45 2015#do it yourself# Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

sed '5a \do it yourself' /etc/fstab

## /etc/fstab# Created by anaconda on Wed Dec 30 06:43:45 2015## Accessible filesystems, by reference, are maintained under '/dev/disk'do it yourself# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

如果想在多行下边或者上边插入信息,可以用下操作

sed '/UUID/a \#I will do my best.' /etc/fstab

## /etc/fstab# Created by anaconda on Wed Dec 30 06:43:45 2015## Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#UUID=42725ac6-787d-4be4-a766-a4b9325eba7e /                       ext4    defaults        1 1#I will do my best.UUID=ec7cf699-9e55-4305-a463-859f8ba83f3b /boot                   ext4    defaults        1 2#I will do my best.UUID=52937bf3-72c9-48d7-a05c-72726731c995 swap                    swap    defaults        0 0#I will do my best.

可以看出/UUID/=5


c \text:把匹配到的行替换为此处指定的文本"text' 注意:是正行替换,不是只替换某个字符。

例如:

sed '/UUID/c \#I will do my best.' /etc/fstab

## /etc/fstab# Created by anaconda on Wed Dec 30 06:43:45 2015## Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info##I will do my best.#I will do my best.#I will do my best.

w /PATH/TO/FILE: 把挑选出来的行保存到一个路径下,例如"把不是#号开头的行保存到/tmp/temp里去

sed -n '/^[^#]/w /tmp/temp/new.xx' /etc/fstab

[root@marco-linux temp]# cd /tmp/temp[root@marco-linux temp]# lsetc  files6  new.xx  passwd1  passwd2  passwd3[root@marco-linux temp]# cat new.xxUUID=42725ac6-787d-4be4-a766-a4b9325eba7e /                       ext4    defaults        1 1UUID=ec7cf699-9e55-4305-a463-859f8ba83f3b /boot                   ext4    defaults        1 2UUID=52937bf3-72c9-48d7-a05c-72726731c995 swap                    swap    defaults        0 0tmpfs                   /dev/shm                tmpfs   defaults        0 0devpts                  /dev/pts                devpts  gid=5,mode=620  0 0sysfs                   /sys                    sysfs   defaults        0 0proc                    /proc                   proc    defaults        0 0

r /PATH/FROM/SOMEFILE: 合并文件用的~! 此选项的意思是把另外一个文件读取后存放在sed目标文件制定的行处 例如我们把/etc/isssue文件读取出来放在fstab文件的第三行下边

sed '3r /etc/issue' /etc/fstab

## /etc/fstabCentOS release 6.7 (Final)Kernel \r on an \m# Created by anaconda on Wed Dec 30 06:43:45 2015## Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#UUID=42725ac6-787d-4be4-a766-a4b9325eba7e /                       ext4    defaults        1 1UUID=ec7cf699-9e55-4305-a463-859f8ba83f3b /boot                   ext4    defaults        1 2UUID=52937bf3-72c9-48d7-a05c-72726731c995 swap                    swap    defaults        0 0tmpfs                   /dev/shm                tmpfs   defaults        0 0devpts                  /dev/pts                devpts  gid=5,mode=620  0 0sysfs                   /sys                    sysfs   defaults        0 0proc                    /proc                   proc    defaults        0 0

= :为每一个能匹配到的行加一个行号 使用方法:sed '/^UUID/= ' /etc/fstab

9UUID=42725ac6-787d-4be4-a766-a4b9325eba7e /                       ext4    defaults        1 110UUID=ec7cf699-9e55-4305-a463-859f8ba83f3b /boot                   ext4    defaults        1 211UUID=52937bf3-72c9-48d7-a05c-72726731c995 swap                    swap    defaults        0 0

! : 表示取反 例如"fstab文件中删除所有以不是#开头的行。

sed '/^#/!d' /etc/fstab

## /etc/fstab# Created by anaconda on Wed Dec 30 06:43:45 2015## Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#

s///:查找替换,其分隔符可以自行指定,比如s$$$ s@@@@ 等

替换标记:

g:全局替换

w: /PATH/TO/IILE : 将替换成功的结果保存到指定的文件中

p:显示替换成功的行

例如: sed 's@^[[:space:]]@@' /PATH/TO/FILE 后两个@@之间表示为空


sed 就说这些把。。祝你学习愉快,也祝我学习愉快

文件 内容 地址 奇数 命令 内存 开头 文档 多行 工作 支持 愉快 成功 一行 偶数 常用 意思 方式 模式 源文件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 深圳恒合互联网络科技有限公司 智能科技公司是互联网公司吗 互联网科技的发展 朗涯互联网科技 极限挑战互联网科技 润盈互联网科技 佰商互联网科技有限公司 互联网金融科技委员会 重庆科技学院互联网 互联网科技大会案例 互联网科技素材视频竖屏 顺网科技2021年互联网排名 安控科技rtu产品工业互联网 本届互联网博览会上的黑科技 内蒙古九一互联网科技 雨阳互联网卡科技有限公司 富国互联网科技002692 西安左小互联网科技有限公司 杭州科技互联网公司有哪些 金融科技创新监管互联网金融 左右互联网络科技 互联网科技公司做什么 互联网科技创新服务 雨阳互联网卡科技有限公司 梅州GM互联网络科技有限公司 新氧科技和美国互联网有关系吗 广州梦谷互联网科技有限公司领导 互联网科技收购价值 西安左小互联网科技有限公司
0