我有“键:值”形式的数据,其中键是901
, 902
, 903
,904
相应的值是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/ /:/'
第二个替换用冒号替换最后一个剩余空格 - 它不会被第一个替换替换,因为没有逗号与之配合。