在键值表单数据中添加自定义分隔符

在键值表单数据中添加自定义分隔符

我有“键:值”形式的数据,其中键是901, 902, 903904相应的值是S, M, F,WAP`,以空格作为分隔符。

  • 输入示例
    901 S 902 M 903 F 904 WAP .....
    

我想转换成key:value,key:value格式。

  • 期望的输出:
    901:S,902:M,903:F,904:WAP .....
    

我尝试使用sed,但只能添加单个分隔符。

答案1

$ sed -E 's/\s*([0-9]+)\s+([A-Z]+)/\1:\2,/g;s/,$//' <<< '901 S 902 M 903 F 904 WAP'
-------8<------------------
901:S,902:M,903:F,904:WAP

答案2

您可以用冒号替换每个奇数空格,用逗号替换每个偶数空格。

sed -E 's/ ([^ ]) /:\1,/g; s/ /:/'

第二个替换用冒号替换最后一个剩余空格 - 它不会被第一个替换替换,因为没有逗号与之配合。

相关内容