oynix

于无声处听惊雷,于无色处见繁花

MacOS命令之sed

写自动化脚本时,会需要修改其他的配置文件,将某些配置值替换成本次的配置,手动改完再去执行脚本不是不可,只不过一两次还可以,次数多了就有些浪费时间了,这时就用到了sed命令,这是个强大的文本编辑命令。

sed命令和vi命令有些像,主要体现在命令的格式上,最大的区别在于vi需要把文件打开之后才可编辑,而sed则不需要打开即可编辑,当文件的体量特别大的时候,比如上万行、上十万、百万行,sed的优势就体现出来了。

1
man sed

来一下man命令,就可以看到sed的详尽介绍了,这里说几个常用的用法。总的来说,无非就是删除、增加、查找替换,其他的需求就没要用sed了。

1. 删除

1
sed -e 'm,nd' test.txt
  • e: expression,表达式,也就是指后面引号里的内容
  • m,nd: 删除第m到第n行,d,delete

2. 增加

1
2
3
sed -e 'ni\
content to insert or append
' test.txt
  • e: 同上
  • ni: 在第n行前面插入一行,a表示在第n行后面插入一样

3. 查找替换

1
2
sed "s/pattern/replace/" test.txt 
sed "n,ms/pattern/replace/g" test.txt
  • s: substitute,替换
  • n,ms: 指定行范围
  • pattern: 支持正则

4. 替换原文件

以上命令在执行后,都是以打印的方式输出,而不会修改原文件,如果要修改原文件,则要使用-i命令,举个例子

1
sed -i '' -e '1,5d' test.file
------------- (完) -------------
  • 本文作者: oynix
  • 本文链接: https://oynix.com/2022/04/f3649fd27956/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

欢迎关注我的其它发布渠道