具体问题描述:
删除代码源文件中采用NSLog打印日志的语句
命令:
find . -name *.m | xargs sed -i "" 's/[^;]\*");$/g'
改进方法:
上面的命令可以删除NSLog所在的行的内容,但是会留下一个空白的行。如果想连空行一起删除可以使用下面的命令:
find . -name *.m | xargs sed -i "" '/");/d'
注意
1、sed -i 后面跟一个双引号
2、sed -i 后面第一个反斜杠之前没有s
小结:
1、对脚本的灵活性一无所知,对正则表达式不能匹配中文存在有很大的误解
[^;]*表示匹配除分号之外的所有字符,包括中文
2、sed -i在Mac上的使用区别
就地替换文件,根据提供的扩展名保存源文件备份。如果不提供扩展名,则不备份。建议替换操作时提供文件备份的扩展名,因为如果恰巧磁盘耗尽的话,你将冒着文件被损坏的风险。网上找的sed命令的使用sed -i 后面大部分都是不带备份扩展名的,在mac上备份扩展名是必须的,如果不想被备份也需要加上一对双引号("")。
网友评论