我想知道如何使用sed
中的单个Mac OSX
语句进行多重查找/替换。我可以在Ubuntu
中执行此操作,但由于BSD
的{{1}}性质,命令必须略有改动。
因此,给定一个包含字符串的文件:
OSX
我想运行一个导致输出的sed语句:
"Red Blue Red Blue Black Blue Red Blue Red"
我的两个sed语句带有符合条件的"Green Yellow Green Yellow Black Yellow Green Yellow Green"
find
我尝试了几种分号和斜线的组合,看了Apple's Dev man page for sed,但由于缺少示例,我无法将它拼凑在一起。
答案 0 :(得分:24)
Apple的手册页说可以使用-e或-f选项指定多个命令。所以我想说
find . -type f -exec sed -i '' -e s/Red/$color1/g -e s/Blue/$color2/g {} \;
这肯定适用于Linux和其他Unices。
答案 1 :(得分:11)
也可以使用分号sed
组合;
命令:
find . -type f -exec sed -i '' -e "s/Red/$color1/g; s/Blue/$color2/g" {} \;
我想知道这是多么便携,并通过this Stackoverflow answer找到the POSIX specification of sed
的链接。特别是如果你有很多sed命令可以运行,这对我来说似乎比编写多个sed
表达式更加混乱。