如何替代“XXX”| {“Foo”,“Bar”}到“YYY”|所有文件中的{“Foo”}递归地存在于目录中?

时间:2012-08-28 23:44:53

标签: regex sed grep substitution

如何在目录中以递归方式将"XXX" | {"Foo", "Bar"}替换为"YYY" | {"Foo"}

我想使用sed,但这里的特殊字符很棘手。

3 个答案:

答案 0 :(得分:1)

使用findxargs的一种方式:

find . -type f -print0 | xargs -0 sed -i -r 's/"XXX" \| \{"Foo", "Bar"\}/"YYY" \| \{"Foo"\}/g'

答案 1 :(得分:0)

使用perl:

> find . -type f|xargs perl -p -e 's/"XXX" \| {"Foo", "Bar"}/"YYY" \| {"Foo"}/g

答案 2 :(得分:0)

这可能适合你(GNU sed):

find . -type f -print0 | 
xargs -0 sed -i '/"XXX"\s*|\s*{\s*\("[^"]*"\)\s*,\s*"[^"]*"\s*}/s//"YYY" | {\1}/g'