Linux命令:sed
sed命令简介:
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。
1.命令格式:
sed [options] ‘ ’
行编辑器 (全屏编辑器: vi),逐行读取
2.命令功能
Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
Linux三大文本处理工具:grep, sed(流编辑器), awk
默认不编辑原文件,仅对模式空间中的数据做处理;而后,处理结束后,将模式空间打印至屏幕;
3.主要参数
sed [options] 'AddressCommand' file ...
-n: 静默模式,不再默认显示模式空间中的内容
-i: 直接修改原文件
-e SCRIPT -e SCRIPT:可以同时执行多个脚本
-f /PATH/TO/SED_SCRIPT: 从文件中读取命令,把命令写入文件,不需要单引号括起来
sed -f /path/to/scripts file
-r: 表示使用扩展正则表达式
Address:
1、StartLine,EndLine
比如1,100
$:最后一行
2、/RegExp/
/^root/
3、/pattern1/,/pattern2/
第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行
4、LineNumber
指定的行
5、StartLine, +N
从startLine开始,向后的N+1行;
Command:
d: 删除符合条件的行; (delete)
sed '1,3d' grub.conf 刪除1-3行
sed '1,+2d' grub.conf 刪除1-3行
sed '1,$-2d' grub.conf 刪除1-倒数第2行
sed '/oot/d' grub.conf 刪除有oot行
sed '/^\#/d' grub.conf 刪除有/开头的行 \转义符
p: 显示符合条件的行; (print)
sed '/^\#/p' grub.conf 重复打印全文 及匹配的有#开头的行 \转义符
sed -n '/^\#/p' grub.conf 只打印有#开头的行 \转义符
a \string: 在指定的行后面追加新行,内容为string
\n:可以用于换行
sed '/^\//a \# hello world' /etc/fstab /开头行的下行加入# hello world
sed '/^\#/a \# hello world' /etc/fstab #开头行的下行加入# hello world
i \string: 在指定的行前面添加新行,内容为string
sed '/^\//i \# hello world' /etc/fstab /开头行的上行加入# hello world
sed '/^\#/i \# hello world' /etc/fstab #开头行的上行加入# hello world
r FILE: 将指定的文件的内容添加至符合条件的行处 (read)
sed '2r /etc/issue' /etc/fstab 第2行的下行加入/etc/issue文件内容到目标文件中
w FILE: 将地址指定的范围内的行另存至指定的文件中; (write)
sed -n '/oot/w /tmp/oot.txt' /etc/fstab 将目标文件中含有oot的行保存到/tmp/oot.txt
s/pattern/string/修饰符: 查找并替换,默认只替换每行中第一次被模式匹配到的字符串
sed 's/oot/OOT/' /etc/fstab 将目标文件中第一个含有oot的字符替换成OOT
sed 's#oot#OOT#g' /etc/fstab 将目标文件中所有含oot的字符替换成OOT
sed 's@oot@OOT@gi' /etc/fstab 将目标文件中所有含不区分大小写oot替换成OOT
匹配多个字符串,需要加修饰符: g: 全局替换 i: 忽略字符大小写
s///: 也可以使用其他字符做分隔符,只要一样就行,如s###, s@@@
后项引用: , \1, \2
匹配整个串: &
l..e->l..er: like-->liker love-->lover
sed 's#l..e#\1r#g'
sed 's#l..e#&r#g'
l..e->L..e: like-->Like love-->Love
sed 's#l(..e)#L\1#g'
4.命令实例:
实例一:删除/etc/grub.conf文件中行首的空白符;
sed -r 's@^[[:space:]]+@@g' /etc/grub.conf
sed -r 's#^[[:space:]]##g' /etc/grub.conf
sed -r 's/^[[:space:]]//g' /etc/grub.conf
实例二:替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;
sed -r 's@(id:)[0-9](:initdefault:)@\15\2@g' /etc/inittab
实例三:删除/etc/inittab文件中的空白行;
sed '/^$/d' /etc/inittab
实例四:删除/etc/inittab文件中开头的#号;
sed 's@^#@@g' /etc/inittab
实例五:删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;
sed -r 's@^#[[:space:]]+@@g' /etc/inittab + 表示出现>1次
实例六:删除某文件中以空白字符后面跟#类的行中的开头的空白字符及#
sed -r 's@^[[:space:]]+#@@g' /etc/inittab
sed 's/^\ \+#//' /etc/inittab
sed '/^\ \+#/d' ./inittab
实例七:取出一个文件路径的目录名称;
echo "/etc/rc.d/" | sed -r 's@^(/.*/)[^/]+/?@\1@g'
取出基名:
echo "/etc/rc.d/" | sed -r 's@^/.*/([^/]+)/?@\1@g'
---end---
转载于:https://blog.51cto.com/wangfx/1863962
Linux命令:sed相关推荐
- sed是linux命令吗,Linux命令 sed
一. 以行为单位进行操作. d:删除 $ nl passwd | sed '2,5d' # 删除第2~5行 $ nl passwd | sed '2d' # 删除第2行 $ nl passwd | ...
- [Linux命令]Sed命令参数
一个命令写了半天总是不对,原来时间久了就忘掉了...,收藏自:http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/sed.htm Table of Content ...
- Linux命令 - sed 简明教程
摘录:http://coolshell.cn/articles/9104.html awk于1977年出生,今年36岁本命年,sed比awk大2-3岁,awk就像林妹妹,sed就是宝玉哥哥了.所以 林 ...
- Linux命令-Sed用法教程
sed 全名为 stream editor,是用于文本处理的流编辑器,支持正则表达式.sed处理文本... 前言 sed 全名为 stream editor,是用于文本处理的流编辑器,支持正则表达式. ...
- linux命令 sed 有的功能有,Linux命令:sed简介
sed是一种在线行编辑器,一次处理一行.工作时,把当前处理的行放到"模式空间"中进行编辑,编辑完成后把内容输送至屏幕. 语法:sed [OPTION]-{script}-[inpu ...
- linux指令 sed,Linux命令sed
sed流编辑器:Stream EDitor sed行编辑器,使用sed,将文件的行加载到内存,符合sed模式空间的显示到屏幕上,sed默认不编辑文件,仅对模式空间的数据处理,处理结束后,将符合模式空间 ...
- linux命令sed与awk是干什么用的,怎么用?
非常强大的文本操纵工具,sed,awk,grep 这个三个命令 都是操作文本文件的 unix系统有几个非常命令的特点: 1. 对于内核而言,unix文件都是字节序列.io设备也是文件. 2. 至于文件 ...
- Linux命令-sed
一.简介 sed 命令是通过流编辑的方式来处理和编辑文件的,也就是逐行读取并查找.处理(增.删.改-)数据. 语法: sed [选项] [脚本命令] 文件名 或者 标准输出 | sed [选项] [脚 ...
- linux gp sed,linux命令---sed
sed stream editor for filtering and transforming text 流编辑器来过滤和改变文本 选项: -n 安静模式,在标准输入给sed时,加上-n 只 ...
- linux 命令sed命令指定行或匹配行插入行
sed -i "231s:.*:hello:g" file #将第231行的所有字符替换为hellosed -i '$d' file #将文件file的最后一行删除sed -i & ...
最新文章
- WEB SSH Ajaxterm客户端配置(1)
- 那些年,让我面试头大的几个排序算法,今天终于搞懂了!
- ios开发笔记之 APNS推送服务的实现
- Android开发 listitem中采用倒计时
- jdk8集合类流_JDK 8中的流驱动的集合功能
- Hibernate事实:集成测试策略
- v5系列服务器后面板不存在以下哪款指示,群晖RS10613xs+ NAS服务器后面板简介
- 远程桌面服务器无法复制粘贴了怎么解决
- 计算机的生产过程,笔记本电脑生产流程介绍 .pptx
- linux基础ppt下载,《Linux基础》PPT课件.ppt
- Unity中的资源管理-一整套简单的资源管理方案(1)
- 小麦苗的常用代码--常用命令(仅限自己使用)--上
- idea 运行单个main方法_idea如何运行main方法
- 怎么样减肥又快又好 达人推荐最有效的减肥方法
- 数据可视化|用堆叠条形图进行对比分析
- 汇付国际为跨境电商赋能:做合规的跨境支付平台!
- 【渝粤题库】陕西师范大学163211 会展管理作业
- SpringBoot2.6.5+Swagger3配置
- python学习-调用邮件接口发送邮件
- Windows 7 安装最新版 2021-3-1 的 tableau 时提示 “指定程序要求更新的 Windows 版本” 解决办法