shell正则表达式sed

上文讲了grep的用法今天主要讲sed

是一种流编辑器,一次处理一行内容

如果只展示 会放在缓冲区,展示结束之后,会从模式空间把操作结果删除。

一行一行处理,处理完当前行才会处理下一行 直到文件末尾

sed的命令格式和操作选项:

sed -e '操作符' -e '操作符' 文件1 文件2

-e 多个操作符时使用 只有个操作符 -e可省略

sed - e '操作符1;操作符2' 文件1 文件2

选项:

-e 多个操作命令

-f 在脚本中定义好了操作符 根据脚本内容的操作符对进行文件操作

-i 直接修改目标文件(慎用)

-n 仅显示script处理后的结果(只显示一个结果)

操作符

p 打印结果

r 使用扩展正则表达式

s 替换字符串

c 替换指定行

y 替换单个字符 替换多个字符长度要保持一致

d 删除行

a 增加 在指定行的下面一行插入内容

i 增加 指定行上面一行插入内容

r 读取其他内容 在指定行下面增加文本内容

$a 最后一行增加内容 (最后一行下面)

$i 倒数第二行增加内容(最后一行上面)

$r 读取其他文件内容 增加到目标文件最后一行

打印文本内容

普通打印 sed ' ' xxx

sed -n 'p' xxx

寻址打印 行号 sed -n '=' test.txt 或 行号+内容 sed -n '=;p' test.txt

打印指定行号 sed -n '4p' test.txt

打印最后一行 sed -n '$p' test.txt

打印指定范围行内容 打印2-4行 sed -n '2,4p' test.txt 打印2和4行 sed -n '2p;4p' test.txt

打印奇数行 sed -n 'p;n' test.txt 偶数行sed -n 'n;p' test.txt

文本过滤

sed -n '/a/p' test.txt 过滤出并打印包含a的行

删除文件内容

sed -n '3d;p' test.txt 删除第三行,打印剩余的行

sed -n '5,$d;p' test.txt 删除第五行到最后一行

sed -n '1!d;p' test.txt 除了第一行其他都删除

sed -n '4,6!d;p' test.txt除了第四行到第六行,其他的全部删除

sed -n '4d;6d;p' test.txt 只删除第四行和第六行

替换

替换字符串

sed -n 's/xxx/yyy/p' x为原字符串 y为替换成的字符串

相关推荐
DemonAvenger14 分钟前
MySQL与应用程序的高效交互模式:从基础到实战的最佳实践
数据库·mysql·性能优化
pound1271 小时前
Linux
linux·运维·服务器
皆过客,揽星河2 小时前
mysql进阶语法(视图)
数据库·sql·mysql·mysql基础语法·mysql进阶语法·视图创建修改删除
learning_tom3 小时前
HTML图片标签及路径详解
linux·服务器·php
dbdr09013 小时前
Linux 入门到精通,真的不用背命令!零基础小白靠「场景化学习法」,3 个月拿下运维 offer,第二十六天
linux·运维·服务器·网络·python·学习
大白的编程日记.4 小时前
【Linux学习笔记】信号的深入理解之软件条件产生信号
linux·笔记·学习
buyutang_4 小时前
C/C++ Linux系统编程:线程控制详解,从线程创建到线程终止
linux·c语言·c++·学习
云的牧人4 小时前
Ubuntu 22 redis集群搭建
linux·运维·ubuntu
siriuuus4 小时前
Linux 磁盘扩容及分区相关操作实践
linux·运维·服务器
To_再飞行4 小时前
K8s 存储配置资源
linux·云原生·容器·kubernetes