29

我想知道如何sedMac OSX. 我能够做到这一点, Ubuntu但由于 的BSD性质OSX,必须稍微改变命令。

因此,给定一个带有字符串的文件:

"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 的 Dev 手册页中的 sed,但由于缺乏示例,我无法将其拼凑起来。

4

2 回答 2

28

Apple 的手册页说可以使用 -e 或 -f 选项指定多个命令。 所以我想说

find . -type f -exec sed -i '' -e s/Red/$color1/g -e s/Blue/$color2/g {} \;

这当然适用于 Linux 和其他 Unices。

于 2013-10-25T13:24:23.073 回答
19

也应该可以sed使用分号组合命令;

find . -type f -exec sed -i '' -e "s/Red/$color1/g; s/Blue/$color2/g" {} \;

我想知道它的可移植性如何,并通过这个 Stackoverflow 答案找到了 POSIX 规范的sed链接。尤其是如果你有很多 sed 命令要运行,这对我来说似乎比编写多个sed表达式更混乱。

于 2014-09-03T03:31:08.000 回答