正则表达式:不包含字符串

moh*_*bet 5 sed regular-expression

我有两个字符串:

字符串 1: 字符串 2 platform1-05_02_00.001:platform
:platform1-domino-05_02_00.001:platform

在第一个中,版本(05_02_00.001)要更改,首先我尝试了正则表达式:

sed -i 's/platform1-.*:platform/platform1-06:hybrisb/g' file
Run Code Online (Sandbox Code Playgroud)

但它改变了 2 个字符串。这就是为什么我正在寻找一些正则表达式来告诉 sed 查找不是“多米诺骨牌”(不包含多米诺骨牌)的字符串

Sat*_*ura 7

一种方法:

sed '/domino/! s/platform1-.*:platform/platform1-06:hybrisb/g' file
Run Code Online (Sandbox Code Playgroud)

/domino/!选择不匹配的行domino


Jef*_*ler 1

考虑使用以下命令跳过包含“platform-domino”的行n

sed '/platform1-domino/ n; s/platform1-.*:platform/platform1-06:hybrisb/g' file
Run Code Online (Sandbox Code Playgroud)

或者,搜索并替换,但消除作为匹配可能性的字母:

sed 's/platform1-[^d][^o][^m][^i][^n][^o].*:platform/platform1-06:hybrisb/g' file
Run Code Online (Sandbox Code Playgroud)