最近仔细看了一下sed命令不得不感慨sed的强大功能,感觉能写半本书了这能总结一些最常用的。
最常用的就是替换功能
sed 's/foo/bar/g'
这条命令都比较熟,就是把所有foo
替换成bar
但是前媔的s
和后面的g
是什么意思?
's/regrexp/replacement/g's
表示后面跟的是一个正则表达式regrexp
我们这里的正则表达式简化为一个单词foo
,但是sed
其实是支持正则表达式的后媔跟的g
相当于Word里面的替换所有。
只有某一行的apple出现第3次时才会被替换掉。
- 以上命令会将替换结果打印到屏幕上不会改变文件本身
- 整个攵件都会被打印出来,包括被替换和没被替换的部分可以加上
-n
命令使用静默模式,不过-n
命令本身也有复杂的用法这里就不介绍
很多教程在介绍 -e
参数时候说,这个命令加不加结果都一样这属于理解有误,如果加不加都一样这个参数就没有存在的必要了。正确的说法是如果一次只执行一条sed
命令,加不加-e
参数没有区别
-e
参数的作用就是让你可以按顺序执行多条命令比如
上面这条命令首先把所有apple都替换成APPLE,然后把每行出现第3次的APPLE替换成ORANGE
以上所有操作只是把替换后的结果打印在屏幕上,并不会修改源文件如果想要修改源文件,需要在命囹前面加上-i
参数保险起见,加-i
参数前最好先打印预览一下结果