sed是一种流编辑器,它是文本处理中非常中的工具,可以逐行处理文本,能够完美的配合正则表达式使用。在日常需要做文本格式化处理时,会经常用到它,比如匹配行输出/匹配行删除/匹配行内字符串替换等。最近拿到一个静态html页面,需要对其中关键信息做格式化输出,便想起了这个东西,当然了,主要还是看对正则的熟悉程度。
读了一些sed等文档,发现其实主要也是如何在sed中使用正则表达式的各种技巧,不过Mac上坑不少,大伙还是尽量在Linux上跑。
测试文件1.txt:
实验一:匹配class 为lazy/title/date的行
这里注意
- -n表示不打印源文件,只答应匹配的行,
2.正则中表示或的’|’需要用反斜杠转义
3.正则尾部p表示打印
4.mac系统上的sed无法做这种或字符串匹配,查资料说只对GUN sed 有效
输出结果2.txt:
实验二: 对2.txt做处理 ,保留data-original属性值和h2,h3内容
其他重要应用:
1.使用 & 标记已匹配字符
输出结果:[this] [is] [a] [test] [line]
说明:/\w+/表示匹配一个单词,正则开始对s表示匹配字符串替换, 这里表示将匹配到的单词str替换为[str],单词外包裹一个括号,g表示行内满足条件全部匹配。
tips: GUN sed下测试,Mac下测试无效
2.匹配子串标记
输出结果:ERIC|eric
说明: \1 ,\2分别表示用()包裹起来的1,2两个匹配子串
tips: GUN sed下测试,Mac下测试无效
更多详细用法,请参考这里
还有这里,酷壳的sed简明教程