千家信息网

Shell编程之正则表达式三剑客——sed工具

发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,sed工具概述擅长对数据行进行处理,sed是一种流编辑器,处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓
千家信息网最后更新 2025年02月08日Shell编程之正则表达式三剑客——sed工具

sed工具概述

擅长对数据行进行处理,sed是一种流编辑器,处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。利用sed命令可以将数据行进行替换、删除、新增、选取等特定工作。

sed命令常见用法

sed [选项] '操作' 参数sed [选项] -f scriptfile 参数
常见的sed命令选项主要包含以下几种

-e 或--expression=:表示用指定命令或者脚本来处理输入的文本文件。
-f 或--file=:表示用指定的脚本文件来处理输入的文本文件。
-h 或--help:显示帮助。
-n、--quiet 或 silent:表示仅显示处理后的结果。
-i:直接编辑文本文件。

"操作"用于指定对文件操作的动作行为,也就是 sed 的命令。通常情况下是采用的"[n1[,n2]]"操作参数的格式。n1、n2 是可选的,不一定会存在,代表选择进行操作的行数

a:增加,在当前行下面增加一行指定内容。
c:替换,将选定行替换为指定内容。
d:删除,删除选定的行。
i:插入,在选定行上面插入一行指定内容。
p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以 ASCII 码输出。其通常与"-n"选项一起使用。
s:替换,替换指定字符。
y:字符转换。

用法示例

1,输出符合条件的文本(p表达正常输出)

sed -n 'p' test.txt 输出所有内容

[root@localhost ~]# sed -n 'p' test.txt the footballyou are best boyPI=3.1415926535897a wood crosshello.the boy

sed -n '2p' test.txt 输出第2行的内容
sed -n '2,5p' test.txt 输出2到5行的内容
sed -n 'p;n' test.txt 输出所有奇数行的内容,n表示读入下一行资料
sed -n 'n;p' test.txt 输出所有偶数行的内容

[root@localhost ~]# sed -n 'p;n' test.txtthe footballPI=3.1415926535897the boy[root@localhost ~]# sed -n 'n;p' test.txt you are best boya wood crosshello.

sed -n '2,5{p;n}' test.txt 输出2到5行中的奇数行
此时的奇数行是原来的第二行,是按照选择的行数的奇偶数决定的

[root@localhost ~]# sed -n '2,5{p;n}' test.txt you are best boya wood cross

以上是 sed 命令的基本用法,sed 命令结合正则表达式时,格式略有不同,正则表达式以"/"包围。例如,以下操作是 sed 命令与正则表达式结合使用的示例。

[root@localhost ~]# sed -n '/the/p' test.txt  输出包含the的行 the footballthe boy

sed -n '4,/the/p' test.txt 输出从第四行到包含第一个the的行

[root@localhost ~]# sed -n '4,/the/p' test.txta wood crosshello.the boy

sed -n '/the/=' test.txt 输出包含the的所在行号

[root@localhost ~]# sed -n '/the/=' test.txt17

sed -n '/^PI/p' test.txt 输出以PI开头的行
sed -n '/[0-9]$/p' test.txt 输出以数字为结尾的行
sed -n '/\/p' test.txt 输出包含单词wood的行

[root@localhost ~]# sed -n '/^PI/p' test.txtPI=3.1415926535897[root@localhost ~]# sed -n '/[0-9]$/p' test.txtPI=3.1415926535897[root@localhost ~]# sed -n '/\/p' test.txta wood cross
2,删除符合条件的文本(d)
下面的命令中nl命令用于计算文件的行数,结合该命令以更加直观查看到命令执行的结果

nl test.txt | sed '3d' 删除第三行
nl test.txt | sed '3,5d' 删除3到5行
nl test.txt | sed '/cross/d' 删除带有cross的行 不包含用!取反

[root@localhost ~]# nl test.txt | sed '3d'     1  the football     2  you are best boy     4  a wood cross     5  hello.     6  the boy[root@localhost ~]# nl test.txt | sed '3,5d'     1  the football     2  you are best boy     5  hello.     6  the boy[root@localhost ~]# nl test.txt | sed '/\/d'     1  the football     2  you are best boy     3  PI=3.1415926535897     4  a wood cross     6  the boy

sed '/^[a-zA-Z]/d' test.txt 删除以字母开头的行
sed '/.$/d' test.txt 删除以.结尾的行
sed '/^$/d' test.txt 删除空格的行

[root@localhost ~]# sed '/^[a-zA-Z]/d' test.txt[root@localhost ~]# sed '/\.$/d' test.txtthe footballyou are best boyPI=3.1415926535897a wood crossthe boy[root@localhost ~]# sed '/^$/d' test.txtthe footballyou are best boyPI=3.1415926535897a wood crosshello.the boy

注意: 若是删除重复的空行,即连续的空行只保留一个, 执行" sed -e '/^$/{n;/^$/d}'test.txt"命令即可实现。其效果与"cat -s test.txt"相同,n 表示读下一行数据。

3,替换符合条件的文本

s(字符串替换)
c(整行/整块替换)
y(字符转换)命令选项,常见的用法如下所示。

4,迁移符合条件的文本

H,复制到剪贴板;
g、G,将剪贴板中的数据覆盖/追加至指定行;
w,保存为文件;
r,读取指定文件;
a,追加指定内容。

5,使用脚本编辑文件

使用 sed 脚本,将多个编辑指令存放到文件中(每行一条编辑指令),通过"-f"选项来调用。

例如:sed '1,5{H;d};17G' test.txt //将第 1~5 行内容转移至第 17 行后
以上操作改用脚本文件方式
[root@localhost ~]# vi opt.list 1,5H1,5d17G[root@localhost ~]# sed -f opt.list test.txt
6,sed直接操作文件示例

编写一个脚本,用来调整 vsftpd 服务配置:禁止匿名用户,但允许本地用户(也允许写入)。

谢谢阅读!!!

输出 命令 内容 文件 处理 文本 脚本 一行 字符 数据 条件 正则 表达式 参数 奇数 常见 示例 缓冲区 缓冲 剪贴板 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北兰新网络技术有限公司招标 数据库标签分为哪两种标签 宝山区网络技术咨询技术指导 英雄联盟服务器一直崩溃 计算计网络技术专业 多梦网络安全黑板报 串行化 数据库 国企的软件开发公司 大话西游2视频第七届服务器联赛 diy微信服务器 酒泉日报网络安全专家库仪式 手机版方舟加入服务器 吴新良网络技术服务部 达梦数据库查看归档日志 数据分析师和数据库工程师哪个好 上海科技网络安全 如何安装ibm服务器2008 dell二手服务器 呼市新华互联网科技学校介绍 非软件开发者 可以申请鸿蒙 网络安全规定发布部门 信息技术网络安全管理措施 数据库查看所有表格命令 网络技术和多媒体实验报告 浪潮服务器怎么进去管理页面 手机版有转化桌的怎么开服务器 我的世界手机版服务器被禁用 管理服务器错误的是 苏州idc服务器技术指导 sql数据库不能用ip怎么办
0