sed 从字符串中删除具有不同值的特定键

sed remove specific key with varying value from string

假设我有一个字符串:

ap=test:::bc=exam:::dc=comic:::mp=calc:::

读取一个linux框,我需要删除bc=exam,键总是相同的,但值可以是任何值,字符串或数字,以及位置键值对可以在字符串中的任何位置。

我必须

sed -e 's/:::bc=\(.*:::\)*//'

只删除键和分隔符。

sed -e 's/:::bc=.*\(:::\)*//'

正在删除密钥中的所有内容。

提前致谢。

由于您的值不包含分号,您可以将它们与否定括号表达式匹配,[^:]*:

sed  's/:::bc=[^:]*//' file

参见online sed demo

:::bc=[^:]* 匹配 :::bc,然后匹配除冒号以外的任何 0+ 个字符。