lz最近在学习sed命令,此命令非常好用,是针对文本中的每一行而言的,可以和awk对比,awk是每一列。但是因为mac系统用的是原生的bsd系列,而一般的linux系统用的是gnu系统,所以两者在某些命令中还是有区别的,此博客就是来研究下具体sed命令在mac和linux系统的一些区别。
1、在某一行下插入一行新的
一般在linux下,采用的是 sed "$line a\\(多一个\,用来防止转义) $value" $filename 是在同一行完成的
而在mac系统中,则要这样写
sed "$line a\ (在\后要加一个空格,然后另起一行,再写需要添加的那一行新的)
>$value(需要添加新一行的内容)
>" $filename(文件名)
也就是在mac系统中,都需要另起一行再重新写,而不是像在linux系统中,直接跟在sed命令的那一行后面来写。
另外,-i是在某一行之前插入,原理和-a一样的。即在mac中,应该这样用:
sed "$line i\
>$value
>" $filename
上述是在mac自带的sed命令,因为其是基于bsd,所以与常用的gnu不一样,所以最好还是能够使用gnu下的sed,那么对于mac,就需要通过命令行来安装gnu-sed,具体安装过程如下所示:
1.brew install gnu-sed --with-default-names
//注意,命令行之行此句时,要在用户权限下,不要在root下,因为在root下,会提示不安全,这里主要用到homebrew工具
2.vi ~/.zshrc
export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
3.source ~/.zshrc 或者新开窗口,让设置生效