linux sed命令详解,sed命令详解
sed命令:
Stream EDitor, 行编辑器
sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
语法:sed [options] ….. ‘script’ [input-file]
script:地址定界编辑命令
常用选项:
-n:
不输出模式空间中的内容的制动打印
-e:
多点编辑
-f /PATH/TO/SED_SCRIPT_FILE:
从指定文件中读取编辑脚本,每行一个编辑命令;
-r :
支持使用扩张正则表达式
-i :
直接编辑原文件
地址界定:
1、不给地址:对全文进行处理;
2、单地址:
#:指定的第#行
/pattern/:被此模式所匹配到的行;
3、地址范围:
#,#: 从第#行到第#行
#,+# : 从第#行到第#+#
#,/pat1/: 从第#行道匹配到第一次匹配到pat1,之间的行
$:最后一行
4、步进:~
1~2:所有奇数行
2~2:所有偶数行
编辑命令:
-d:
删除
-p:
显示模式空间内容
a \text:
在行的后面追加文本,支持使用\n实现多行追加
i \text :
在行的后面追加文本,支持使用\n实现多行追加
c \text :
把匹配到的行替换为此处指定的文本
w /PATH/TO/SOMEFILE :
保存模式空间匹配到的行至指定的文件中
r /PATH/TO/SOMEFILE :
读取指定文件中的内容至当前文件被模式匹配到的行后面,文件合并。
= :
为模式匹配到到的行打印行号
!:
条件取反
s///:
查找替换,其分割符可自行指定。如:@@@,###
替换标记:
g:全局替换
w /PATH/TO/SOMEFILE : 将替换成功的结果保存至指定文件中;
p:显示替换成功的行
sed元字符:
^
匹配行开始,如:/^sed/匹配所有以sed开头的行。
$
匹配行结束,如:/sed$/匹配所有以sed结尾的行。
.
匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
*
匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个字符后紧跟sed的行。
[]
匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。
[^]
匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行
\(..\)
匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。
&
保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。
\<
匹配单词的开始,如:/\
\>
匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行。
x\{m\}
重复字符x,m次,如:/0\{5\}/匹配包含5个0的行。
x\{m,\}
重复字符x,至少m次,如:/0\{5,\}/匹配至少有5个0的行。
x\{m,n\}
重复字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0的行。
示例:
1、删除/etc/grub2.conf文件中所 有以空白开头的行行首的空白字符
[root@centos7 ~]# sed 's/^[[:space:]]\+//g' /etc/grub2.cfg
2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
[root@centos7 ~]# sed 's/^#[[:space:]]\+//g' /etc/fstab
3、在/root/install.log每一行行首增加#号
[root@localhost ~]# sed 's/^/#/g' install.log
4、在/etc/fstab文件中不以#开头的行的行首增加#号
[root@centos7 ~]# sed -e 's/^[^#]/#&/g' -e 's/^$/#/' /etc/fstab
sed命令中有两个空间,前面已经提到模式空间(pattern word),还有一个叫做保持空间(hold space)。在模式空间编辑后的文本都可以放置在保持空间中。保持空间与模式空间的内容可以互相交换,极大的提高使用灵活度。使用保持空间就需要用到高级的编辑命令了:
高级编辑命令:
h:
把模式空间中的内容覆盖至保持空间中;
H:
把模式空间中的内容追加至保持空间中;
g:
把保持空间中的内容覆盖至模式空间中;
G:
把保持空间中的内容追加至模式空间中;
x:
把模式空间中的内容与保持 空间中的内容互换
n:
覆盖读取匹配到的行的下一行至模式空间中;
N:
追加读取匹配到的行的下一行至模式空间中
d:
删除模式空间中的行;
D :
删除多行模式空间中的所有行;
示例:
1、sed -n 'n;p' FILE
解析:编辑命令分为两个部分:
①-n:不输出模式空间中的自动打印内容
②编辑命令中:n: 将读取到的行的下一行覆盖至模式空间,
即:开始读取第一行时将第二行一并读取,在模式空间中第二行将第一行覆盖,即模式空间中现在只有第二行文件。然后p打印模式空间中的行。然后再读取文件中的第三,四行文件。模式空间中第四行将第三行覆盖,随后p打印出第四行,一次类推直至最后一行。所输出的结果即为第二、四、六……等偶数行。
结果:显示偶数行
2、sed '1!G;h;$!d' FILE
解析:编辑命令分为三个部分:
①:1!G :不是第一行就执行G选项,及将保持空间内的内容追加至模式空间中。
②:h:将模式空间内的内容覆盖至保持空间
③:$!d:不是最后一行就删除
首先命令读取文件中第一行内容,①不执行,②执行将模式空间内的内容覆盖至保持空间,即模式空间现为第一行内容,保持空间为第一行内容。③执行,模式空间为空,保持空间为第一行。
然后读取第二行内容,①执行,模式空间为第二行,第一行。保持空间不变。② 执行,保持空间改变为第二行,第一行。③执行,模式空间变为空。
以此类推,命令读取至最后一行时,①模式空间为最后一行,倒数第二行,……②执行,保持空间同模式空间一样逆序排列。③不执行。
结果:逆序显示文件的内容
3、sed '$!N;$!D' file
解析:编辑命令分为两个部分:
①$!N:不是最后一行就将追加读取匹配到的行的下一行至模式空间中。
②$!D : 不是最后一行就删除多行模式空间中的所有行。
首先读取文件第一行,①执行,模式空间为第一行,第二行。②执行,模式空间为空。
以此类推,读取至文件倒数第二行,①执行,模式空间为倒数第二行,倒数第一行。②不执行。
结果:取出文件最后两行。
4、sed '/^$/d;G' FILE:
解析:编辑命令分为两个部分:
①/^$/d:匹配到空白行就删除。
②G:将保持空间中的行追加至模式空间中。
①执行,命令匹配到文件中的空白行,然后删除。②执行,保持空间为空,将空白行追加至模式空间行后。
结果:把文件中原有的空白行删除,而后为所有的非空白行后台添加空白行
5、sed 'n,d' FILE
解析:编辑命令分为两个部分;
①:n: 覆盖读取匹配到的行的下一行至模式空间中
②:d:删除
首先,命令读取文件第一行,①执行,模式空间中为第二行,②执行,模式空间为空。命令未加-n选项,输出模式空间自动打印,即输出第一行,
以此类推,输出模式空间内容的自动答应,即为第一、三、五……行
结果:显示奇数行
原创文章,作者:Groot,如若转载,请注明出处:http://www.178linux.com/32355
linux sed命令详解,sed命令详解相关推荐
- linux中替换命令详解,linux中sed命令字符串替换的用法详解
Linux系统中sed命令可以将字符串批量替换,省去了很多麻烦,下面由学习啦小编为大家整理了linux系统中sed命令字符串替换的用法详解,希望对大家有帮助! linux中sed命令字符串替换的用法详 ...
- sed是linux命令吗,Linux12_ sed命令详解
sed意为"流编辑器(stream editor)" 字符串筛选工具. 对一个文档中的行进行操作 和vi编辑很相似.可以查看vim使用命令详解 1 sed基本格式 第一种 sed ...
- 详解sed命令与awk命令
文章目录 sed命令 功能 语法格式 命令选项 动作说明 使用介绍 awk命令 功能 语法 案例 编写一个监控CPU和内存使用率的脚本 编写按文件大小排序输出的脚本 参考文章 sed命令 功能 sed ...
- 详解Shell脚本:sed命令工具 ,awk命令工具
-----------------------------概述----------------------------------- Linux文本处理工具(以下都是命令和工具,而且只是作为展示,不能 ...
- linux中grep命令返回值,grep命令详解
如果你是一个新手,请从头阅读这篇文章,如果你只是忘记了grep命令的一些常用选项,直接查看文章尾部的总结部分即可. 先说说grep命令能做什么? 我们可以使用grep命令在文本中查找指定的字符串,就像 ...
- Linux中sort,uniq,cut,wc命令详解
Linux中sort,uniq,cut,wc命令详解 来源:hellodev 本文主要对Linux中sort,uniq,cut,wc这4个命令的使用方法进行了详细说明,希望对你有所帮助. sort s ...
- linux下sort命令使用详解---linux将文本文件内容加以排序命令
转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...
- netstat详解_需要!Linux常用监视和故障排查命令详解
作者:老油条IT记 公众号:老油条IT记 #命令预览 1.top 2.ps 3.nice 4.kill 5.iostat 6.mpstat 7.vmstat 8.df 9.du 10.netstat ...
- linux添加用户命令_Linux useradd命令添加新用户图文详解
在Linux 系统中,可以使用 useradd 命令新建用户,此命令的基本格式如下: [root@localhost ~]#useradd [选项] 用户名 该命令常用的选项及各自的含义,如表 1 所 ...
最新文章
- java代码中何处以main开始,Gradle-user guide-第7章 Java 快速开始
- 数字政通图像处理面试_SLAM面试问题大全
- zigbee 编译source_zigbee_sensor_monitor_v1_2_1 vs2008 qt-win-opensource-src-4.4.3
- 安卓手机玩游戏卡顿怎么解决_手机卡顿怎么办?教你3个实用解决方法,两分钟解决卡顿难题!...
- [usaco2004][bzoj3379] 交作业
- 怎么读取瑞萨mcu的 checksum_为物联网设备选择一颗“安全”的MCU
- Docker基本使用(一)
- JSK-384 进制转换【入门】
- Python入门--获取字典视图的三个方法#keys()-->获取字典中所有key#values()-->获取字典中的所有value#items()-->获取字典中所有key-value对
- 【浙江大学PAT真题练习乙级】1002 写出这个数(20分) 真题解析
- ios 边录音边放_iOS 录音、音频的拼接剪切以及边录边压缩转码
- Repository does not allow updating assets 解决方法
- 如何在电脑上装一个虚拟机
- 复星打造的外滩新地标--BFC外滩金融中心将于12月12日正式开业
- Windows操作系统及其应用
- windows 安装python
- vue3 导入svg图片
- 电容,电阻,二极管,三极管
- 海康嵌入式软件面试经验(已拿offer)
- S3C6410裸机SD卡驱动(SDIO模式)
热门文章
- 反向传播算法(BP算法)
- CRC16校验码生成原理
- phpstudy mysql3306端口被占用_【亲测】启动PHPstudy提醒80、3306端口被占用的3种解决办法...
- 奥奇传说服务器显示,奥奇传说手游1区奥奇城开服时间表_奥奇传说手游新区开服预告_第一手游网手游开服表...
- 软件测试Linux面试题:Linux用到的命令
- div标签里面的a标签不能跳转
- Apollo 6.0 参考线 ReferenceLine 生成
- MySQL 到 PostgreSQL 实时数据同步实操分享
- 计算机系统的备份与还原实验报告,实验报告系统备份和恢复.doc
- xshell连接windows的ubuntu子系统