【发布时间】:2020-07-15 18:40:12
【问题描述】:
我想更改一个字符串,以便在每个“单词”周围加上双引号,不包括冒号和逗号':,'。
例如,我的输入可能如下所示:
[分析:真,限制:假,STRING_PARAMETER:世界, JOB_NAME:Hello_Jenkins]
但我希望它显示为
["ANALYSIS":"true", "RESTRICTED":"false", "STRING_PARAMETER":"World", "JOB_NAME":"Hello_Jenkins"]
我一直在使用类似的东西(使用'_'作为分隔符)
'echo ${params} | sed -i "s_\'/\\([^:]*\\):/i\'_\'"$1" :\'_g" '
根据我在网上找到的内容,但它对我的字符串没有任何更改。
【问题讨论】:
-
你的意思是这样吗?
sed 's/\([[:alnum:]_][[:alnum:]_]*\)/"\1"/g' <<< "[ANALYSIS:true, RESTRICTED:false, STRING_PARAMETER:World, JOB_NAME:Hello_Jenkins]"见demo -
请注意,
-i选项表示“--inplace”,这仅在您指定要处理的sed的文件名时有用,即sed -i '/script/' file。祝你好运。 -
你的正则表达式中有一堆
's,但你的输入中没有's 加上一些其他奇怪的东西,所以正则表达式永远无法匹配输入的任何部分。