前言
sed 是一个流编辑器。它是文本处理中非常有用的工具。它可以与正则表达式完美配合使用,具有非凡的功能。在处理过程中,当前处理的行被存储在一个临时缓冲区中,称为“模式空间”,然后使用sed 命令来处理缓冲区的内容。处理完成后,将缓冲区的内容发送到屏幕。然后处理下一行,并重复直到文件末尾。除非您使用重定向来存储输出,否则文件内容不会更改。 sed主要用于自动编辑一个或多个文件、简化对文件的重复操作、编写转换程序等。
总结一下:
1.首先了解特殊字符:
^ 表示行的开头。例如:/^#/匹配以# 开头的内容。 $ 表示一行的结束。例如:/}$/匹配以} 结尾的内容。 \ 表示单词的开头。例如,\abc 表示以abc 开头的单词。 \ 表示单词的结尾。例如,abc\ 表示以abc 结尾的单词。代表任意单个字符。 * 表示某个字符出现0 次或多次。 [ ] 字符集。例如:[abc]表示匹配a或b或c,[a-zA-Z]表示匹配全部26个字符。如果里面有^,则表示相反的意思,如[^a],表示非a字符。注意:sed与正则表达式关系密切,可以使用很多正则匹配。
1.显示文件中匹配的行
cat tmp.txt|sed -n '/匹配字符正则/p' (-n 不打印所有文件)
2.显示文件所在行
cat tmp.txt|sed -n '1p' --第一行--
cat tmp.txt|sed -n '1,3p' --一到三行--
3.替换文件中的字符
猫tmp.txt | sed 's/ee/ff/' 或sed 's/ee/ff/' tmp.txt --将tmp.txt文件每一行中第一个匹配的ee替换为ff,而不改变原文档--
猫tmp.txt | sed 's/ee/ff/g' 或sed 's/ee/ff/g' tmp.txt --将tmp.txt 文件中所有ee 替换为ff,不改变原文件-- sed 's/ee/ff/' tmp.txt tmp2.txt -- 将tmp.txt文件中的ee替换为ff,不改变原文件,生成新的tmp2.txt文件--
更改原文件:sed -i 's/ee/ff/' tmp.txt
4. 替换指定行
cat tmp.txt |sed '3,5s/ee/ff/' -- 将文件中的第3 至5 行替换为ee 作为ff--
5、更换配套线路
猫tmp.txt | sed '/^w/s/ee/ff/' --tmp.txt 文件中以w 开头的行中的ee 替换为ff--
猫tmp.txt | sed '/^w/,/^x/s/ee/ff/' --将tmp.txt文件中w到x开头的行中的ee替换为ff--
6. 批量重命名文件的示例包括:
aa.txt bb.txt cc.txt 重命名为aa.jpg bb.jpg cc.jpg
ls |sed 's/\(.*\)\.txt/mv \1\.txt \1\.jpg/'|sh
\( )\为内存空间,记录匹配的aa bb cc,\1为内存空间中第一个匹配生成mv的命令码,通过sh执行--
7. 删除匹配行——不显示它们,也不修改源文件。
仅删除第二行:$ sed '2 d'employee.txt
删除第1 至4 行: $ sed '1,4 d'employee.txt
删除第二行到最后一行:$ sed '2,$d'employee.txt
仅删除奇数行:$ sed '1~2 d'employee.txt
删除所有包含'Manager' 的行: $ sed '/Manager/d' employee.txt
删除包含'Jason' 的第一行到第四行: $ sed '/Jason/,4 d' employee.txt
删除从匹配'Raj' 的第一行到匹配'Jane' 的行: $ sed '/Raj/,/Jane/d'employee.txt
删除与'Jason' 匹配的行及其下面的两行: $ sed '/Jason/,+2 d' employee.txt
一些有用的删除示例
从文件中删除所有空行:sed '/^$/d'employee.txt
删除所有注释行(假设注释以#开头): sed '/^#/d'employee.txt
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/4831.html
用户评论
终于找到了!之前一直想找一个简单易懂的Sed学习资源
有11位网友表示赞同!
太棒了!这个总结帮我梳理了一下常用的Sed命令,很有用。
有13位网友表示赞同!
Shell编和编程真的少不了sed命令啊,收藏一下
有8位网友表示赞同!
程序猿要真是基础就应该把 Sed 牢记于心,太常用啦
有15位网友表示赞同!
作为程序媛,这绝对是必备的!感谢分享~
有7位网友表示赞同!
刚接触Shell脚本,看来Sed命令需要好好学习啊
有16位网友表示赞同!
我还没学会sed命令,这个总结很适合小白入门
有14位网友表示赞同!
这个总结干货满满!好多SED命令都是零基础的我不会が使的。
有20位网友表示赞同!
感谢分享,以后遇到文本处理问题就来看看这份总结~
有13位网友表示赞同!
学习Shell脚本真要从掌握Sed开始
有15位网友表示赞同!
sed 一定是shell编程里必不可少的技能,这个总结非常实用!
有17位网友表示赞同!
我最近在做Shell脚本调试,不知道还能用哪些sed命令...
有9位网友表示赞同!
笔记!笔记!这些常用SED命令要整理好。学习中~
有7位网友表示赞同!
这份总结太棒了!刚好有需要用到Sed命令
有6位网友表示赞同!
终于找到这么全面的SED命令总结!以后就不用自己慢慢码了
有11位网友表示赞同!
这个总结简直是我的救星!经常在Shell脚本里用到的 comandos,谢谢分享
有18位网友表示赞同!
学习Sed命令,真的太方便了!感谢您分享的总结文档
有5位网友表示赞同!
作为一名程序猿,Sed 命令确实是必备的基础内容
有17位网友表示赞同!