sed命令

 sed简介

sed(Stream EDitor)linux中是一种流编辑器。vim也是linux中一种编辑器。相比来说,最明显的区别,sed修改编辑文件不需要直接打开文件进行编辑,vim则需要打开文件直接编辑修改。

简单举例如下:
要修改的文件:
[root@server sed]# cat a.txt
aaa
bbb
ccc
ddd
eee
[root@server sed]#
最终需要实现的效果(将ccc替换成rep,并且注意之间有空隔,ccc之间没有)
[root@server sed]# cat a.txt
aaa
bbb
rep rep rep
ddd
eee
[root@server sed]
1)sed方式:
[root@server sed]# sed 's#c#rep #g' a.txt
aaa
bbb
rep rep rep
ddd
eee
[root@server sed]#
此时屏幕虽然显示第3行为rep,但是真正的文件内容还是没有修改.
这个需要添加一个sed选项 -i。可以尝试一下。
2)vim方式
[root@server sed]# vim a.txt
aaa
bbb
ccc
ddd
eee
鼠标移动到ccc位置,将ccc修改成rep rep rep
这时候已经体会到了两个小区别:
(1)vim首先需要先vim 文件名后进入文件后进行编辑,移动到位置进行内容替换;sed不用编辑文件,直接在命令行直接可以使用命令修改
(2)如果对于修改文件中多个内容的话,sed的效率更高
接下来开始学习使用sed,由易到难,由浅入深。多多关注更新
一 基础
1.sed 命令格式
sed [选项] '命令' 文件名
如:sed -i 's#要替换内容#替换后的内容#g' 文件名
2.
(1)常用选项

-n (silent或quiet) 取消默认输出,只显示匹配到的内容所在的行
-e 可同时执行多个命令
-r 支持扩展的表达式
-f (--file) 可以将sed的多个命令写在一个文件里,直接使用-f指定文件名
-i 直接修改文件内容
(2)常用命令
s 替换
d 删除
a 在指定行下面插入内容
i 在指定行上面插入内容
c 把选定的行改成后边要指定的内容
w filename 写并追加匹配的内容到filename末尾。

(3)sed替换标记
p 打印文件内容 一般与-n一起使用,只打印匹配到的行
g 全局替换

3.示例(Practice)
以下示例源文件均为:
[root@server sed]# cat a.txt
aaa
bbb
ccc
ddd
eee
[root@server sed]#

(1)替换s(将ccc修改成rep):
[root@server sed]# sed 's#c#rep #' a.txt
aaa
bbb
rep cc
ddd
eee
这个没有加g,可以看出,sed只修改了第一个匹配到的内容。其他的内容没有修改
[root@server sed]# sed 's#c#rep #g' a.txt
aaa
bbb
rep rep rep
ddd
eee
[root@server sed]#
这个加g,代表全局替换,将替换所有的c的字符
(2)删除(注意对比不同的例子,表达的不同的功能)此时屏幕显示删除成功,但是文件内容还是没删除,因为没有添加修改文件内容的选项-i
删除文件中的第2行
[root@server sed]# sed '2d' a.txt
aaa
ccc
ddd
eee
[root@server sed]#
删除文件中第2至4行
[root@server sed]# sed '2,4d' a.txt
aaa
eee
[root@server sed]#
删除文件中匹配到ee的行
[root@server sed]# sed '/ee/d' a.txt
aaa
bbb
ccc
ddd
[root@server sed]#
(3)添加内容
在指定行上面插入内容(a)
[root@server sed]# sed '3i 123' a.txt
aaa
bbb
123
ccc
ddd
eee
[root@server sed]#
在指定行下面插入内容(i)
[root@server sed]# sed '1a 123' a.txt
aaa
123
bbb
ccc
ddd
eee
[root@server sed]#

(4)替换选定的行
替换第3行内容为scottsofia
[root@server sed]# sed '3c scottfia' a.txt
aaa
bbb
scottfia
ddd
eee
[root@server sed]#

将匹配到dd的行替换为scottsia
[root@server sed]# sed '/dd/c scottfia' a.txt
aaa
bbb
ccc
scottfia
eee
[root@server sed]#
(5)写并追加匹配的内容到filename末尾(w)
[root@server sed]# ls
a.txt
未执行sed前,当前目录只有一个atxt文件
[root@server sed]# sed 'w w_filename' a.txt
aaa
bbb
ccc
ddd
eee
[root@server sed]# ls
a.txt w_filename
指定sed中w后新生成一个指定的w_filename文件,同时内容如下
[root@server sed]# cat w_filename
aaa
bbb
ccc
ddd
eee
[root@server sed]#
以上先是简单的sed入门示例,稍后会增加深入点内容。欢迎指教。

 

转载于:https://www.cnblogs.com/scottsofia/p/9608221.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值