SED 替换 prisma 模式中的值

问题描述 投票:0回答:1

假设我有一个名为 schema.prisma 的文件,如下所示

generator client {
 provider = "prisma-client-js"
}

datasource db {
  provider = somevalue
  url      = env("DATABASE_URL")
}

model User {
  id        Int     @id @default(autoincrement())
  email     String      @unique
  name      String?
  todos     Todo[]
  createdAt DateTime    @default(now())
  updatedAt DateTime    @updatedAt
}

model Todo {
  id        Int     @id @default(autoincrement())
  createdAt DateTime    @default(now())
  updatedAt DateTime    @updatedAt
  title     String      @db.VarChar(255)
  completed Boolean     @default(false)
  user      User        @relation(fields: [userId], references: [id])
  userId    Int
}

我想使用 SED 来替换第二个提供程序实例

我制作了以下正则表达式,它可以让我得到我想要的行

\bprovider(?!.*prisma).*/

但我似乎无法让 SED 来使用它

例如

sed 's/\bprovider\(?!.*prisma\)/blue/' ./prisma/schema.prisma

应该产生

generator client {
 provider = "prisma-client-js"
}

datasource db {
  provider = blue
... rest of file

我知道 sed 逐行读取,所以这种方法对我来说似乎应该有效。

这个正则表达式我缺少什么?

bash sed
1个回答
0
投票

sed
没有
look around
功能。

更好地使用

perl

perl -pe 's/\bprovider\(?!.*prisma\)/blue/' ./prisma/schema.prisma
© www.soinside.com 2019 - 2024. All rights reserved.