Linux中sed的用法实践
Linux中sed的用法实践
参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html
http://www.fn139.com/list-2.html
sed命令行格式为:
sed [-nefri] 'command' 输入文本/文件
常用选项:
-n:取消默认的输出,使用安静(silent)模式。在一般的sed用法中,
所有来自STDIN的资料一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来
-e:进行多项编辑,及对输入行应用多条sed命令时使用。直接在指令模式上进行sed的动作编辑
-f:指定sed脚本的文件名。直接将sed的动作写在一个档案内,-f filename则可以执行filename内的sed动作
-r:sed的动作支援的是延伸型正则表达式的语法。(预设是基础正则表达式语法)
-i:直接修改读取的文件内容,而不是由屏幕输出
常用命令:
a: 新增,a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)
c: 取代,c的后面可以接字符串,这些字符串可以取代n1,n2之间的行
d: 删除,因为是删除,所以d后面通常不接任何内容
i: 插入,i后面可以接字符串,而这些字符串在新的一行出现(目前的上一行)
p: 列印,亦即将某个选择的资料打印出来。通常p会参与sed -n一起用
s:取代,可以直接进行替换工作。通常这个s的动作可以搭配正则表达式。例如1,20s/old/new/g
定址
定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。
地址是一个数字,则表示行号;是"d' passwd # 删除最后一行
[root@my3-224 ~]# sed -i '1,2d' passwd # 删除第1行到第2行
[root@my3-224 ~]# sed -i '2,p' passwd # 显示最后一行
[root@my3-224 ~]# sed -n '1,2p' passwd # 显示第一行到第二行
[root@my3-224 ~]# sed -n '20,所在的所有行,使用反斜线\屏蔽特殊含义
增加一行或多行字符串
[root@my3-224 ~]# cat ab
Hello!
ruby is me,welcome to my blog.
end
[root@my3-224 ~]#
[root@my3-224 ~]# sed -i '1a drink tea' ab # 第一行后增加字符串"drink tea"
[root@my3-224 ~]# cat ab
Hello!
drink tea
ruby is me,welcome to my blog.
end
[root@my3-224 ~]#
[root@my3-224 ~]# cat ab
Hello!
ruby is me,welcome to my blog.
end
[root@my3-224 ~]# sed -i '1,3a drink tea' ab # 第一行到第三行后增加字符串"drink tea"
[root@my3-224 ~]# cat ab
Hello!
drink tea
ruby is me,welcome to my blog.
drink tea
end
drink tea
[root@my3-224 ~]#
[root@my3-224 ~]# sed '1a drink tea\nor coffee' ab # 第一行后增加多行,使用换行 符\n
Hello!
drink tea
or coffee
ruby is me,welcome to my blog.
end
[root@my3-224 ~]# sed -i '1a drink tea\nor coffee' ab # 第一行后增加多行,使用换行符\n
[root@my3-224 ~]# cat ab
Hello!
drink tea
or coffee
ruby is me,welcome to my blog.
end
[root@my3-224 ~]#
替换一行中的某部分
格式:sed 's/要替换的字符串/新的字符串/g' (要替换的字符串可以用正则表达式)
[root@my3-224 ~]# sed -n 's/drin/BBB/g' ab # 替换drin为BBB
[root@my3-224 ~]# sed -i 's/drin/BBB/g' ab # 替换drin为BBB
[root@my3-224 ~]# cat ab
Hello!
BBBk tea
or coffee
ruby is me,welcome to my blog.
end
[root@my3-224 ~]#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下