文章目录

  • 简介
  • 参数
  • 使用实列
    • 向文件中添加或插入行
    • 更改文件中指定的行
    • 删除文件中的行
    • 替换文件中的内容
    • 打印文件中的行
    • 打印文件中行号
    • 从文件中读取内容
    • 向文件中写入内容

简介

Sed是非交互式的编辑器,用来对文本进行过滤和替换操作,它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。

参数

sed的常用选项:
-e      他告诉sed将下一个参数解释为一个sed指令,只有命令行上给出多个sed指令时需要-e选项
-f      后跟保存了sed指令的文件
-n      取消默认输出,sed默认会输出所有文本内容,使用-n参数后只显示处理过的行
-i      直接对内容进行修改,不加-i时默认只是预览,不会对文件做实际修改
sed中编辑命令:
-a      追加  向匹配行后面插入内容
-c      更改  更改匹配行的内容
-i      插入  向匹配行前插入内容
-d      删除  删除匹配行内容
-s      替换  替换匹配的内容
-p      打印  打印匹配行内容,通常与-n和用
=      打印匹配的行号
r       用用将内容读入文件
w       用与将匹配内容写入文件

使用实列

向文件中添加或插入行
#向第三行后面添加Hello
[root@boke home]# sed '3aHello' 2.test
aaaaaa
bbbbbb
cccccc
Hello
dddddd
#在最后一行加入Hello
[root@boke home]# sed '$aHello' 3.test
aaaaaa
bbbbbb
cccccc
dddddd
eeeeee
dddddd
Hello
#向内容cccccc前面添加heelo,如果文件中有多行包括cccccc,则每一行后面都会添加
[root@boke home]# sed  '/cccccc/ahello' 5.test
aaaaaa
bbbbbb
cccccc
hello
更改文件中指定的行
#将文件第一行替换成hello
[root@boke home]# sed '1chello' 1.test
hello
bbbbbb
cccccc
#将包含文件ddd的行替换为hello
[root@boke home]# sed '/ddd/chello' 1.test
aaaaaa
bbbbbb
cccccc
hello
#将最后一行替换为word
[root@boke home]# sed '$cword' 1.test
aaaaaa
bbbbbb
cccccc
dddddd
eeeeee
word
删除文件中的行
#删除文件第二行
[root@boke home]# sed '2d' 1.test
aaaaaa
cccccc
dddddd
eeeeee
#删除文件1,2行
[root@boke home]# sed '1,2d' 1.test
cccccc
dddddd
eeeeee
#删除文件最后一行
[root@boke home]# sed '$d' 1.test
aaaaaa
bbbbbb
cccccc
#删除匹配aaa的行
[root@boke home]# sed '/aaa/d' 1.test
bbbbbb
cccccc
dddddd
#删除1~2之外的所有行
[root@boke home]# sed '1,2!d' 1.test
aaaaaa
bbbbbb
#删除空行
[root@boke home]# cat 1.test
aaaaaabbbbbb
cccccc
[root@boke home]# sed '/^$/d' 1.test
aaaaaa
bbbbbb
cccccc
#删除不匹配aa或bb的所有行
[root@boke home]# cat 2.test
aaaaaa
bbbbbb
cccccc
dddddd
eeeeee
dddddd
[root@boke home]# sed '/aa\|bb/!d' 2.test
aaaaaa
bbbbbb
替换文件中的内容
#将文本123替换为word,默认只替换每行第一个
[root@boke home]# cat 3.test
aaabbb
123 123
cccccc
234[root@boke home]# sed 's/123/word/' 3.test
aaabbb
word 123
cccccc
234
#将文本中所有123行替换为word
[root@boke home]# cat 3.test
aaabbb
123 123
cccccc
234[root@boke home]# sed 's/123/word/g' 3.test
aaabbb
word word
cccccc
234
#将每行中第二个匹配的123替换为hello
[root@boke home]# cat 3.test
aaabbb
123 123
cccccc
234[root@boke home]# sed 's/123/word/2' 3.test
aaabbb
123 word
cccccc
234
#将每行所有匹配的123替换为word,并将替换后内容写入3.txt
[root@boke home]# cat 3.test
aaabbb
123 123
cccccc
123
[root@boke home]# sed -n 's/123/word/gpw 3.txt' 3.test
word word
word
#删除#号注释
[root@boke home]# cat 5.test
#aaaaaa
#bbbbbb
#cccccc
#dddddd
[root@boke home]# sed  's/^#//' 5.test
aaaaaa
bbbbbb
cccccc
dddddd
#删除文本中的空格行
[root@boke home]# cat 5.test
#aaaaaa#bbbbbb#cccccc#dddddd[root@boke home]# sed '/^$/d' 5.test
#aaaaaa
#bbbbbb
#cccccc
#dddddd
[root@boke home]# ^C
[root@boke home]#
打印文件中的行
#打印文件中第2行内容
[root@boke home]# cat 2.test
aaaaaa
bbbbbb
cccccc
dddddd
eeeeee
dddddd
[root@boke home]# sed -n '3p' 1.test
bbbbbb
#打印文件最后一行
[root@boke home]# cat 1.test
aaaaaabbbbbb
cccccc
[root@boke home]# sed -n '$p' 1.test
cccccc
#打印文件1~3行
[root@boke home]# cat 2.test
aaaaaa
bbbbbb
cccccc
dddddd
eeeeee
dddddd
[root@boke home]# sed -n '1,3p' 2.test
aaaaaa
bbbbbb
cccccc
#打印文件3行到最后一行内容
[root@boke home]# cat 2.test
aaaaaa
bbbbbb
cccccc
dddddd
eeeeee
dddddd
[root@boke home]# sed -n '3,$p' 2.test
cccccc
dddddd
eeeeee
dddddd
#逐行读取文件,打印匹配ddd的行
[root@boke home]# cat 2.test
1.aaaaaa
2.bbbbbb
3.cccccc
4.dddddd
5.eeeeee
6.dddddd
[root@boke home]# sed -n '/dd/p' 2.test
4.dddddd
6.dddddd
#打印从匹配的cc行至最后一行内容
[root@boke home]# cat 2.test
1.aaaaaa
2.bbbbbb
3.cccccc
4.dddddd
5.eeeeee
6.dddddd
[root@boke home]# sed -n '/cc/,$p' 2.test
3.cccccc
4.dddddd
5.eeeeee
6.dddddd
打印文件中行号
#打印文件的行号
[root@boke home]# wc -l 1.test
4 1.test
[root@boke home]# sed -n '$=' 1.test
4
#打印匹配cc的行号
[root@boke home]# cat 2.test
1.aaaaaa
2.bbbbbb
3.cccccc
4.dddddd
5.eeeeee
6.dddddd
[root@boke home]# sed -n '/cc/=' 2.test
3
#打印匹配cc行号及内容
[root@boke home]# cat 2.test
1.aaaaaa
2.bbbbbb
3.cccccc
4.dddddd
5.eeeeee
6.dddddd
[root@boke home]# sed -n '/cc/{=;p}' 2.test
3
3.cccccc
从文件中读取内容
#将1.test内容,读入2.test中,会在1.test中的每一行后读入2.test内容
[root@boke home]# cat 1.test
111
222
333
[root@boke home]# cat 2.test
aaa
bbb
ccc
[root@boke home]# sed 'r 2.test' 1.test
111
aaa
bbb
ccc
222
aaa
bbb
ccc
333
aaa
bbb
ccc
#在1.test第2行插入2.test的内容
[root@boke home]# cat 1.test
111
222
333
[root@boke home]# cat 2.test
aaa
bbb
ccc
[root@boke home]# sed '2r 2.test' 1.test
111
222
aaa
bbb
ccc
333
#在1.test的最后一行插入2.test的内容
[root@boke home]# cat 1.test
111
222
333
[root@boke home]# cat 2.test
aaa
bbb
ccc
[root@boke home]# sed '$r 2.test' 1.test
111
222
333
aaa
bbb
ccc
向文件中写入内容
#将1.test文件的内容写入2.test,如果2.test文件不存在则创建,如果2.test存在则覆盖之前内容
[root@boke home]# cat 1.test
111
222
333
[root@boke home]# cat 2.test
aaa
bbb
ccc
[root@boke home]# cat 2.test
111
222
#将文件1.test中第二行写入2.test中
[root@boke home]# cat 1.test
111
222
333
[root@boke home]# cat 2.test
aaa
bbb
ccc
[root@boke home]# sed -n '2w 2.test' 1.test
[root@boke home]# cat 2.test
222
#将1.test第一行与最后一行写入2.test中
[root@boke home]# cat 1.test
111
222
333
[root@boke home]# cat 2.test
aaa
bbb
ccc
[root@boke home]# sed -n -e '1w 2.test' -e '$w 2.test' 1.test
[root@boke home]# cat 2.test
111
333
#将1.test中匹配123或abc的行内容,写入2.test、
[root@boke home]# cat 1.test
123
abc
345
123,aaa,abc,ddd123
[root@boke home]# sed -n '/123\|abc/w 2.test' 1.test
[root@boke home]# cat 2.test
123
abc
123,aaa,abc,ddd123
#将1.test中匹配234的行到最后一行的内容写入2.test中
[root@boke home]# cat 1.test
111
234
aaa
bbb
ccc
[root@boke home]# sed -n '/234/,$w 2.test' 1.test
[root@boke home]# cat 2.test
234
aaa
bbb
ccc

est

111
333

#将1.test中匹配123或abc的行内容,写入2.test、
[root@boke home]# cat 1.test
123
abc
345
123,aaa,abc,ddd123
[root@boke home]# sed -n '/123\|abc/w 2.test' 1.test
[root@boke home]# cat 2.test
123
abc
123,aaa,abc,ddd123
#将1.test中匹配234的行到最后一行的内容写入2.test中
[root@boke home]# cat 1.test
111
234
aaa
bbb
ccc
[root@boke home]# sed -n '/234/,$w 2.test' 1.test
[root@boke home]# cat 2.test
234
aaa
bbb
ccc

Linux sed命令详解相关推荐

  1. linux sed p变量,Linux sed 命令详解系列教程之各种问题解决

    本文目录: 1 sed中使用变量和变量替换的问题 2 反向引用失效问题 3 "-i"选项的文件保存问题 4 贪婪匹配问题 5 sed命令"a"和"N& ...

  2. linux sed.写文件,Linux文件处理sed命令-linux sed命令详解-linux sed写入文件-嗨客网

    Linux文件处理sed命令详解教程 Linux sed命令使用 Linux sed 命令处理时,把当前处理的行存储在临时缓冲区中,称为 "模式空间"( oattern space ...

  3. linux sed 命令,Linux sed 命令详解

    Linux sed 命令详解 Linux sed 命令是利用脚本处理文本文件. sed 可按照脚本的指令来处理.编辑文本文件. sed 主要用于自动编辑一个或多个文件.简化对文件的反复操作.编写转换程 ...

  4. LInux sed命令详解

    文章转自:http://qifuguang.me/2015/09/21/sed%E5%91%BD%E4%BB%A4%E8%AF%A6%E8%A7%A3/#comments sed命令详解 sed是st ...

  5. linux替换换行符 n r,Linux Sed命令详解+如何替换换行符\n(很多面试问道)

    Sed Sed是一个强大的文本处理工具 可以采用正则匹配,对文本进行插入删除修改等操作 Sed处理的时候,一次处理一行,每一次把当前处理的存放在临时缓冲区,处理完后输出缓冲区内容到屏幕,然后把下一行读 ...

  6. [Linux] sed命令详解

    一.Sed简介 sed是一种在线编辑器,它一次处理一行内容.处理时sed会把当前处理的行存储在临时缓冲区中,称为"模式空间"(patternspace),接着用命令处理缓冲区中的内 ...

  7. linux sed f,Linux Sed 命令详解

    一.Sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时sed会把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用命令处理缓冲区中 ...

  8. linux sed不起作用,linux sed命令详解

    1. Sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区 ...

  9. Linux怎么升级sed版本,Linux sed命令详解

    sed是一种流编编器,它是文本处理中非常中的工具,能够完美的配合正则表达式便用,功物能不同凡响. 处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"( oattern sp ...

  10. linux sed命令详解,sed命令详解

    sed命令: Stream EDitor, 行编辑器 sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为&qu ...

最新文章

  1. OSPF 疑重难要14点--转屎壳Q岛的一个文章
  2. AI模型加速进入万亿级时代,中国AI算力独占全球三成
  3. 如何大写字符串中每个单词的第一个字符
  4. Haskell 斐波那契 数列 递归实现
  5. 完整的Ubuntu18.04深度学习GPU环境配置,英伟达显卡驱动安装、cuda9.0安装、cudnn的安装、anaconda安装
  6. cr全称是什么意思_轻生未遂?她到底经历了些什么......
  7. ★LeetCode(175)——组合两个表(MySQL)
  8. linux下udf光盘权限问题,linux - 关于mysql udf权限的问题?
  9. 【Codeforces 1051D】Bicolorings
  10. Node.js 在微医的应用场景及实践
  11. OSChina 周二乱弹 ——程序员在聊天中注意观察什么细节
  12. 脉冲在matlab,脉冲时间信号MATLAB表示
  13. 递归算法的时间复杂度计算
  14. Ubuntu安装mpich
  15. android原生见缝插针游戏自定义控件源码
  16. 如何用计算机打出下山,登山怎么正确下山
  17. 大旺中学2021年高考成绩查询,2021广东肇庆中考分数线是多少
  18. 计算机软件著作权申请表中开发运行环境、技术特点等项目的编写指南
  19. 你还在用挂历记录大事件?试试这款动态日历表!
  20. Review of Conditional Expectation and Martingale

热门文章

  1. java实现简单学生信息管理系统
  2. 新编计算机组装与维护标准教程,计算机组装与维护标准教程(2018-2020版)
  3. 国医眼科大师-唐由之-干眼症熏方
  4. 用友BIP为企业降低创新壁垒,加速智能化进程
  5. 湖南科技大学web课程设计之网页聊天室的实现
  6. 你的第一桶金是如何赚到的?
  7. python调用turtle(海龟画图),画一个正方形
  8. 环信webIM即时通讯学习笔记
  9. 接口地址没错但是报404
  10. 关于后端接口测试没问题,HTTP500错误