一、sed的介绍
sed是一种包括所有UNIX平台的轻量级流编辑器,主要的作用是用来数据的提取、替换、删除、新增的命令。
有些朋友会说,之前不是学过编辑器vim吗?sed与vim两种有区别吗?
vim只能修改文件,但是vim不能修改命令的输出结果。要想修改必须先重定向存入文件(命令 &>> 文件)才可以。如下图:
但是sed不仅能修改文件,而且还能利用管道符接收数据进行修改。
总之,sed与vim最主要的区别:
1、直接修改命令的输出结果
2、利用管道符接收数据进行修改
日常使用当中,sed使用较少,最主要的应用场景还是在shell脚本编程当中。
二、sed命令的格式与选项
sed [选项] '[动作]' 文件名 //注意动作要用英文状态的单引号括起来
选项:
-n //只会把经过sed命令处理的行输出到屏幕
-e //对输入的数据应用多条sed命令进行编辑
-i //直接修改数据文件,而不是由屏幕输出。也就是说,如果不加-i选项,数据只是输出到屏幕上进行了改变,并不会影响文件中的原始数据。
动作:
三、常用示例
sed '2p' stu.txt //如果不加-n选项会多输出一行,而不是输出我想要的行。只要不加-i选项,所有的操作都不影响文件本身。
一般情况下,如果有"p"的动作,都需要加上-n选项。
------------------------------
利用管道符接收命令的结果
------------------------------
删除指定行范围的数据
sed '2,4d' stu.txt
------------------------------
追加数据
sed '1a 追加的数据' stu.txt //在第一行后面再追加一行数据。如果加入多行,使用"\"
------------------------------
插入数据
sed '1i hello' stu.txt //在第一行行前插入数据,同样支持多行
------------------------------
行替换
sed '1c 替换的行' stu.txt
------------------------------
字符串替换
sed '3s/zhang/z/g' 文件名 //把第3行的"zhang"改为"z",不加行数代表整篇文档。
------------------------------
修改到文件中,sed -i '3s/zhang/z/g' stu.txt 一般来说不推荐使用-i选项,sed主要的作用还是处理命令的输出。如果要修改请使用vim更加的简单方便而且出错的可能更小。
------------------------------
-e选项,允许多个条件同时应用。
领取专属 10元无门槛券
私享最新 技术干货