我想知道如何在Mac OSX
中使用单个sed
语句执行多个查找/替换。我可以在Ubuntu
中执行此操作,但由于OSX
的BSD
特性,命令必须稍微更改。
因此,给定一个包含以下字符串的文件:
"Red Blue Red Blue Black Blue Red Blue Red"
我想运行一个sed语句,其结果如下:
"Green Yellow Green Yellow Black Yellow Green Yellow Green"
我的两个sed语句使用限定的find
color1="Green"
color2="Yellow"
find . -type f -exec sed -i '' s/Red/$color1/g {} \;
find . -type f -exec sed -i '' s/Blue/$color2/g {} \;
我尝试了几种分号和斜线的组合,并查看了Apple's Dev man page for sed,但由于缺乏示例,我无法将其拼凑在一起。
3条答案
按热度按时间6psbrbz91#
Apple的手册页上说 * 可以使用-e或-f选项指定多个命令。
这当然适用于Linux和其他Unice。
vnzz0bqm2#
可以使用分号
;
合并sed
命令:与编写多个
sed
表达式相比,这减少了混乱。我想知道这有多便携,并通过this Stackoverflow answer找到了一个到the POSIX specification of
sed
的链接。jm81lzqq3#
在我最近的Mac OS版本中,我在一个sed调用中使用多个命令的情况并不多见,相反,我只是求助于多个管道,每个管道都有自己的一个sed命令。
作为sed的忠实粉丝,这绝对不是一个理想或优雅的解决方案,但它确实奏效了。