Linux sed命令详解
文章目录
- 简介
- 参数
- 使用实列
- 向文件中添加或插入行
- 更改文件中指定的行
- 删除文件中的行
- 替换文件中的内容
- 打印文件中的行
- 打印文件中行号
- 从文件中读取内容
- 向文件中写入内容
简介
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命令详解相关推荐
- linux sed p变量,Linux sed 命令详解系列教程之各种问题解决
本文目录: 1 sed中使用变量和变量替换的问题 2 反向引用失效问题 3 "-i"选项的文件保存问题 4 贪婪匹配问题 5 sed命令"a"和"N& ...
- linux sed.写文件,Linux文件处理sed命令-linux sed命令详解-linux sed写入文件-嗨客网
Linux文件处理sed命令详解教程 Linux sed命令使用 Linux sed 命令处理时,把当前处理的行存储在临时缓冲区中,称为 "模式空间"( oattern space ...
- linux sed 命令,Linux sed 命令详解
Linux sed 命令详解 Linux sed 命令是利用脚本处理文本文件. sed 可按照脚本的指令来处理.编辑文本文件. sed 主要用于自动编辑一个或多个文件.简化对文件的反复操作.编写转换程 ...
- 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 ...
- linux替换换行符 n r,Linux Sed命令详解+如何替换换行符\n(很多面试问道)
Sed Sed是一个强大的文本处理工具 可以采用正则匹配,对文本进行插入删除修改等操作 Sed处理的时候,一次处理一行,每一次把当前处理的存放在临时缓冲区,处理完后输出缓冲区内容到屏幕,然后把下一行读 ...
- [Linux] sed命令详解
一.Sed简介 sed是一种在线编辑器,它一次处理一行内容.处理时sed会把当前处理的行存储在临时缓冲区中,称为"模式空间"(patternspace),接着用命令处理缓冲区中的内 ...
- linux sed f,Linux Sed 命令详解
一.Sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时sed会把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用命令处理缓冲区中 ...
- linux sed不起作用,linux sed命令详解
1. Sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区 ...
- Linux怎么升级sed版本,Linux sed命令详解
sed是一种流编编器,它是文本处理中非常中的工具,能够完美的配合正则表达式便用,功物能不同凡响. 处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"( oattern sp ...
- linux sed命令详解,sed命令详解
sed命令: Stream EDitor, 行编辑器 sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为&qu ...
最新文章
- OSPF 疑重难要14点--转屎壳Q岛的一个文章
- AI模型加速进入万亿级时代,中国AI算力独占全球三成
- 如何大写字符串中每个单词的第一个字符
- Haskell 斐波那契 数列 递归实现
- 完整的Ubuntu18.04深度学习GPU环境配置,英伟达显卡驱动安装、cuda9.0安装、cudnn的安装、anaconda安装
- cr全称是什么意思_轻生未遂?她到底经历了些什么......
- ★LeetCode(175)——组合两个表(MySQL)
- linux下udf光盘权限问题,linux - 关于mysql udf权限的问题?
- 【Codeforces 1051D】Bicolorings
- Node.js 在微医的应用场景及实践
- OSChina 周二乱弹 ——程序员在聊天中注意观察什么细节
- 脉冲在matlab,脉冲时间信号MATLAB表示
- 递归算法的时间复杂度计算
- Ubuntu安装mpich
- android原生见缝插针游戏自定义控件源码
- 如何用计算机打出下山,登山怎么正确下山
- 大旺中学2021年高考成绩查询,2021广东肇庆中考分数线是多少
- 计算机软件著作权申请表中开发运行环境、技术特点等项目的编写指南
- 你还在用挂历记录大事件?试试这款动态日历表!
- Review of Conditional Expectation and Martingale