shell sed命令介绍

 

sed命令是一种对文本过滤和转换的脚本编辑器,如下为官方解释。

sed - stream editor for filtering and transforming text

目录

语法介绍

命令介绍

增删改查

多点编辑

直接编辑文件


语法介绍

sed [-hnV] -e[命令] -f[命令文件] [处理对象]

-h    help,帮助

-n    quiet,仅显示命令处理后的结果,不展示中间过程

-V    version,版本信息

-e    expression,需要执行的命令

-f    file,需要执行的命令文件

命令介绍

a    追加数据

i    插入数据

d    删除数据

c    取代整行数据

s    取代匹配的数据

p    打印操作,通常和-n配合使用

增删改查

原始数据如下:  test_file.txt

---- file start ----
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----

在文件某行之后增加数据, sed -e '4a new line' test_file.txt

sed -e '4a new line' test_file.txt 
结果如下:
---- file start ----
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
new line
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----

在文件某行之前增加数据,sed -e '4i new line' test_file.txt

sed -e '4i new line' test_file.txt
---- file start ----
aaaaaaaaaa
aaaaaaaaaa
new line
aaaaaaaaaa
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----

删除文件中某一行,sed -e '4d' test_file.txt

sed -e '4d' test_file.txt
---- file start ----
aaaaaaaaaa
aaaaaaaaaa
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----

删除文件中特定的几行,sed -e '4,7d' test_file.txt

sed -e '4,7d' test_file.txt
---- file start ----
aaaaaaaaaa
aaaaaaaaaa
---- file end ----

删除到文件末尾,sed -e '4,$d' test_file.txt

sed -e '4,$d' test_file.txt
---- file start ----
aaaaaaaaaa
aaaaaaaaaa

将文件的第三行进行替换,sed -e '4c new line' test_file.txt

sed -e '4c new line' test_file.txt
---- file start ----
aaaaaaaaaa
aaaaaaaaaa
new line
ddddddddddd
---- file end ----

将文件中特定的几行进行替换,sed -e '4,6c new line' test_file.txt

sed -e '4,6c new line' test_file.txt
---- file start ----
aaaaaaaaaa
aaaaaaaaaa
new line
ddddddddddd
---- file end ----

打印某几行,sed -n '1,3p' test_file.txt

sed -n '1,3p' test_file.txt
---- file start ----
aaaaaaaaaa
aaaaaaaaaa

打印匹配特定文本的行,sed -n '/aaa/p' test_file.txt

sed -n '/aaa/p' test_file.txt
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa

删除匹配特定文本的行,sed -e '/aaa/d' test_file.txt 

sed -e '/aaa/d' test_file.txt 
---- file start ----
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----

搜索文本,并且进行替换,sed -e 's/aaaaaaa/ddd/g' test_file.txt

sed -e 's/aaaaaaa/ddd/g' test_file.txt
---- file start ----
dddaaa
dddaaa
dddaaa
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----

多点编辑

对文件进行两次替换,sed -e 's/aaaaaaa/ddd/g' -e 's/dddaaa/hello/g' test_file.txt 

sed -e 's/aaaaaaa/ddd/g' -e 's/dddaaa/hello/g' test_file.txt 
---- file start ----
hello
hello
hello
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----

直接编辑文件

对文件进行变量替换,并且写入文件,sed -i 's/aaaaaaa/ddd/g' test_file.txt 

sed -i 's/aaaaaaa/ddd/g' test_file.txt 
cat test_file.txt
---- file start ----
dddaaa
dddaaa
dddaaa
ddddddddddd
ddddddddddd
ddddddddddd
---- file end ----

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值