Shell脚本学习笔记——sed
sed是一种流编辑器,它是文本处理中的工具,能够完美的配合正则表达式使用。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲器中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。
sed默认按照Basic规范基本匹配。
- 命令格式
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
- 常见基本使用
(1)/pattern/p:打印匹配pattern的行。
使用p命令需要注意,sed是把待处理文件的内容连同处理结果一起输出到标准输出的,因此p命令表示除了把文件内容打印出来之外还额外打印一遍匹配pattern的行。要想只输出处理结果,应加上-n选项,这种用法相当于grep命令。
(2)/pattern/d:删除匹配pattern的行。
注意,sed命令不会修改原文件,删除命令只表示某些行不打印输出,而不是从原文件中删去。若要影响源文件,需要使用-i选项。
(3)/pattern/pattern1/pattern2/:查找符合pattern的行,将该行第一个匹配pattern1的字符串替换为pattern2。使用sed,注释C代码当中所有的printf。
(4)/pattern/s/pattern1/pattern2/g:查找符合pattern的行,将该行所有匹配pattern1的字符串替换为pattern2。
那么同样是替换,带g或者不带g有什么区别呢?
这样一对比,区别就一目了然了。另外,还有另外一种写法:
可以在pattern2中使用&代替pattern1。
(5)子串匹配标记\1,\2...\n
\(..\)用于匹配子串,对于匹配到的第一个字串就标记为\1,依此类推,匹配到的第二个结果就是\2,我们通过对标签进行重组,从而完成数组逆置。
- 退出状态