说我有一个字符串。
ap=test:::bc=exam:::dc=comic:::mp=calc:::
在一个linux盒子里读,我需要删除说: bc=exam
键总是相同的,但值可以是任何值,字符串或数字,键值对的位置可以是字符串中的任何地方。
我得
sed -e 's/:::bc=\(.*:::\)*/\1/'
其中只删除了键和定界符。
或
sed -e 's/:::bc=.*\(:::\)*/\1/'
也就是把钥匙上的所有东西都去掉。
先谢谢你了。
由于你的值不包含分号,你可以用否定括号表达式来匹配。[^:]*
:
sed 's/:::bc=[^:]*//' file
见 在线 sed
演示.
该 :::bc=[^:]*
匹配 :::bc
然后是除冒号以外的任何0+字符。