如何删除斜线之间的单词?

时间:2019-05-10 07:16:05

标签: sed

我需要regexp,它将删除所有目录中的tinrab

grep -rl "tinrab" /home/miki/go/src/github.com/meower
/home/miki/go/src/github.com/meower/pusher-service/main.go
/home/miki/go/src/github.com/meower/Dockerfile
/home/miki/go/src/github.com/meower/event/nats.go
/home/miki/go/src/github.com/meower/event/event.go
/home/miki/go/src/github.com/meower/meow-service/handlers.go
/home/miki/go/src/github.com/meower/meow-service/main.go
/home/miki/go/src/github.com/meower/query-service/handlers.go
/home/miki/go/src/github.com/meower/query-service/main.go
/home/miki/go/src/github.com/meower/search/elastic.go
/home/miki/go/src/github.com/meower/search/repository.go
/home/miki/go/src/github.com/meower/Gopkg.lock
/home/miki/go/src/github.com/meower/Gopkg.toml
/home/miki/go/src/github.com/meower/db/repository.go
/home/miki/go/src/github.com/meower/db/postgres.go
/home/miki/go/src/github.com/meower/.git/logs/HEAD
/home/miki/go/src/github.com/meower/.git/logs/refs/heads/master
/home/miki/go/src/github.com/meower/.git/logs/refs/remotes/origin/HEAD
/home/miki/go/src/github.com/meower/.git/config

例如在Dockerfile中,我有这行

WORKDIR /go/src/github.com/tinrab/meower

我的目标是使生产线没有丁拉布

WORKDIR /go/src/github.com/meower

此正则表达式

replaceAll("/tinrab*/ *", " ")

应以某种方式实施。 有什么想法吗?

如果我尝试

grep -rl "tinrab" /home/miki/go/src/github.com/meower | xargs replaceAll("\/tinrab\/", "")

我知道了

bash: syntax error near unexpected token `('

1 个答案:

答案 0 :(得分:2)

您说过您想使用正则表达式/tinrab*/ *,但是根据您提供的示例,我想/tinrab可以满足您的要求。

grep -rl "tinrab" /home/miki/go/src/github.com/meower | \
  xargs -r sed -i 's!/tinrab!!g'

我使用的sed表达式的一般格式为:s!<from>!<to>!g,其作用与您考虑的replaceAll("<from>", "<to>")伪代码相同。