Linux shell sed命令使用
Linux处理文本文件的工具:
grep 过滤文件内容
sed 编辑文件内容
awk
正则表达式Regex
正则表达式Regex
sed在处理文本时是逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳过。
sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,灵活方便,特别适合于大文件的编辑。本文主要介绍sed的一些基本用法,并通过shell脚本演示sed的使用实例。
(1)匹配单个字符的元字符
.
[abc] [a-z] [A-Z] [0-9] [a-zA-Z0-9] [^a-z]
[[:alpha:]] [[:upper:]] [[:lower:]] [[:digit:]]
(2)匹配字符出现位置
^str 以...开头
str$ 以...结尾
^$ 空行
(3)匹配字符出现的次数
*
\?
\+
\{3\}
\{2,5\}
\{2,\}
sed: Stream Editor 流编辑器
行编辑器 逐行编辑
将每行内容读入到内存中,在内存中进行处理,将结果返回给屏幕,此段内存空间称为摸索空间
默认不编写原文件,仅对模式空间的数据进行处理,处理结束后,将模式空间的内容显示到屏幕
sed命令的使用格式
# sed [option] scripts file1 file2...
# sed [option] 'AddressCommand' file1 file ...
Address:表示对那些进行处理
Command:操作命令
option选项:
-n:不在显示模式空间的内容(默认显示)
-i:直接修改原文件
-e:‘AddressCommand’ -e ‘AddressCommand’:同时执行多个匹配操作
[root0shell ~]+ sed -e ‘/^#/d’ -e '/^5/d' /etc/fstab
-f:FILE将多个AddressCommand保存至文件中,每行一个AddressCommand;读取该文件中的操作同时执行多个操作
-r:表示使用扩展正则表达式
Address表示方法:
(1)StartLine, EndLine
1, 100
1,$
(2)lineNumber
3
(3)Startline, tn
5,+2 /root/,+2
(4)/正则表达式/
/root/
/bash$/
(5)/正则表达式1/, /正则表达式2/
第1次被Regex1匹配的行升始,到第1次被Regex2匹配的行中同的所有行
d删除
删除前4行
[root@wei init.d]# sed '1,4d' nginx.sh
删除最后一行
[root@wei init.d]# sed '$d' nginx.sh
删除#开头的行
[root@wei ~]# sed '/^#/d' /etc/fstab
删除/开头的行
[root@wei ~]# sed '/^\//d' /etc/fstab
删除带数字的行
[root@wei ~]# sed '/[0-9]/d' /etc/fstab
p 显示符合条件的行
显示以/开头的行
[root@wei ~]# sed -n '/^\//p' /etc/fstab
a \string 在符合条件的行后追加新行,string为追加的内容
在以/开头的行后面追加# hello word
[root@wei ~]# sed '/^\//a\# hello word' /etc/fstab
在以/开头的行后面分别追加# hello word # hello linux
[root@wei ~]# sed '/^\//a\# hello word' /etc/fstab
i \string 在符合条件的行前追加新行,string为追加的内容
在文件的第一行追加 # hello linux
[root@wei ~]# sed '1i \# hello linux' /etc/fstab
c \string 替换指定的内容
将文件中最后一行的内容替换为 end of file
[root@wei ~]# sed '$c\end of file' /etc/fstab
= 用于显示每一行的行号
显示/etc/passwd文件最后一行的行号
[root@wei ~]# sed -n '$=' /etc/passwd
r file_name 将指定的文件的内容添加到符合条件的后面
将文件的第二行后面追加/etc/fstab
[root@wei ~]# sed '2r /etc/issue' /etc/fstab
w file_name 将符合条件的内容另存到指定的文件中
将以#开头的行另存到/1.txt中
[root@wei ~]# sed '/^#/w /root/1.txt' /etc/fstab
查找并替换
默认情况下,只替换每一行第一次出现的字符
s /old/new/[修饰符]
old:正则表达式/
new:替换的内容
修饰符
g:替换第一行所有的字符
i:忽略大小写
查找文件的UUID,并替换成uuid
[root@wei ~]# sed 's/UUID/uuid/' /etc/fstab
将行首的/替换成#
[root@wei ~]# sed 's/^\//#/' /etc/fstab
[root@wei ~]# sed 's|/|#|g' /etc/fstab
将每一行出现的所有/替换成@
[root@wei ~]# sed 's/\//@/g' /etc/fstab
Linux shell sed命令使用的更多相关文章
- Linux shell sed命令在文件行首行尾添加字符
昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed命令上,今天不总结一下都对不起昨天流逝的时间啊~~~ 用sed命令在行首或行尾添加字符的命令有以下几种: 假设处理的文本为test.f ...
- Linux shell sed 命令详解
详细的sed命令详解,请参考https://my.oschina.net/u/3908182/blog/1921761 sed命令常见用途 查找关键词做全局替换 查找某行的关键词做替换 查找关键字所在 ...
- linux 的sed命令解释 sed ':t;N;s/\n/,/;b t' 将换行符换成逗号
linux 的sed命令解释 sed ':t;N;s/\n/,/;b t' 将换行符换成逗号 实现的功能是吧换行符换成逗号了,自己试验过. 求解释,:t N b t 都是什么意思??? :t 定义la ...
- Linux shell tr 命令详解
该随笔摘自 https://www.jb51.net/article/103892.htm Linux shell tr 命令详解 1. 用途 tr,translate的简写,主要用于压缩重复字符,删 ...
- linux中sed命令(全面解析)
目录 一:linux中sed命令介绍 1.sed作用 2.sed命令格式 3.参数 4.sed的编辑模式 5.sed参数解析用法 二:sed 参数 -f 案例实战解析 1.前介 2.引入简介 3.方法 ...
- Linux系统sed命令常用参数实战
Linux系统sed命令常用参数实战 常用参数 -n 输出某行的文本内容,通常与p联合使用, -e 命令行模式下进行sed的动作编辑,输出编辑后的内容,源文件不会发生变化 -f 以命令中指定的scri ...
- [Shell]sed命令在MAC和Linux下的不同使用方式
---------------------------------------------------------------------------------------------------- ...
- Linux shell日常命令和技巧
转自:http://www.vaikan.com/linux-shell-tips-and-tricks/ 原文:http://www.techbar.me/linux-shell-tips/ 使用L ...
- linux中sed命令的使用
sed命令是linux或者shell编程中常用的筛选.替换命令,如果能熟练使用sed则对经常使用的人来说在工作上是非常有帮助的 下面把sed主要的用法列出来(有错误的地方大家可以指正): p命令只打印 ...
随机推荐
- Zabbix的基本功能
zabbix组件: 两核心组件: zabbix-server(监控者) :收集agent发送的数据,写入数据库(mysql.oracal.)中,再通过web展示出来.默认端口为10051. zabbi ...
- Linux性能优化实战学习笔记:第五十五讲
一.上节回顾 上一节,我们一起学习了,应用程序监控的基本思路,先简单回顾一下.应用程序的监控,可以分为指标监控和日志监控两大块. 指标监控,主要是对一定时间段内的性能指标进行测量,然后再通过时间序列的 ...
- WEB前端开发职业学习路线初级完整版
作者 | Jeskson 来源 | 达达前端小酒馆 下面小编专门为广大web前端开发职业者汇总了学习路线初级完整版,其实web前端开发工程师可算是高福利,高薪水的职业了,所以现在学习web前端开发的技 ...
- 第09组 Beta冲刺(4/5)
队名:观光队 链接 组长博客 作业博客 组员实践情况 王耀鑫 过去两天完成了哪些任务 文字/口头描述 学习 展示GitHub当日代码/文档签入记录 无 接下来的计划 完成短租车,页面美化 还剩下哪些任 ...
- 企业级Nginx负载均衡与keepalived高可用实战(二)keepalived篇
1.Keepalived高可用软件 1.1.Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实 ...
- Visual Studio 调试系列12 远程调试部署在远程计算机IIS上的ASP.NET应用程序
系列目录 [已更新最新开发文章,点击查看详细] 要调试已部署到IIS的ASP.NET应用程序,请在部署应用程序的计算机上安装并运行远程工具,然后从Visual Studio附加到正在运行的应用 ...
- 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (三)
本文属于图神经网络的系列文章,文章目录如下: 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (一) 从图(Graph)到图卷积(Graph Convolutio ...
- 批量插入sql技巧
方式一: ); ); 方式二: ), (); 第二种比较好.第二种的SQL执行效率高的主要原因是合并后日志量(MySQL的binlog和innodb的事务让日志)减少了,降低日志刷盘的数据量和频率,从 ...
- Angular6 学习笔记——路由详解
angular6.x系列的学习笔记记录,仍在不断完善中,学习地址: https://www.angular.cn/guide/template-syntax http://www.ngfans.net ...
- 【C++】Debug模式和Release模式的区别
VS中的程序有两种编译模式:Debug模式和Release模式. Debug通常称为调试版本,通过一系列编译选项的配合,编译结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能 ...