【发布时间】:2020-04-04 23:32:38
【问题描述】:
我有一个包含几行的文件,例如:
"key1":"val1","key2":"val2","key3":"val3","key4":"val4"
在vi 编辑器或使用sed 我想用"," 替换":" 和"," 之间的所有文本,即我想保留所有键并删除所有值。
这条线会变成这样:
"key1","key2","key3","key4"
在vi 编辑器中,我尝试使用:%s/":".*","/","/g,并使用sed 我使用sed 's/":"*","/","/',但不是替换中间文本,而是删除第一次出现":" 的所有文本最后一次出现",",即这条线正在变成"key1","key4":"val4"。
如何替换随后出现的 ":" 和后面的 "," 之间的文本?
【问题讨论】:
-
.*是一个怪物,因为.匹配任何东西,而*是贪婪的。这应该会有所帮助:stackoverflow.com/questions/1305853/… -
您是否在尝试操纵 JSON?喜欢this?
-
假设键不能包含
:,值不能包含"::%s/:"[^"]*"//g或:%s/":"[^"]*//g