1

我有以下文本(以及更多)的文件。

import (
    "http"
    "web"
)

我想"web""pkg/web"(在所有文件中)替换所有内容。所以结果需要

 import (
        "http"
        "pkg/web"
    )

我试着sed喜欢

find . -type f -print0 | xargs -0 sed -i '/"web"/c\"pkg/web"'

这给出了错误。

sed: 1: "test" invalid command code .

什么是正确的方法?

谢谢。

4

2 回答 2

1

问题是您正在使用/正则表达式分隔符,但也在/替换字符串中使用。

好消息是它sed允许使用不同的正则表达式分隔符。

这个带有不同正则表达式分隔符的 sed 应该可以工作:

sed -i.bak 's~^\( *\)"web" *$~\1"pkg/web"~g'

更新:要在搜索字符串的 LHS 上保留空格:

find . -type f -print0 | xargs -0  sed -i '' 's~^\([[:space:]]*\)"web"[[:space:]]*$~\1"pkg/web"~g'
于 2013-10-25T10:33:30.777 回答
0

寻找 。-type f -print0 | xargs -0 sed -i -e 's@"web"@"pkg/web"@g'

这对我来说很好。

于 2013-10-25T12:17:16.163 回答