![在键值表单数据中添加自定义分隔符](https://linux22.com/image/215945/%E5%9C%A8%E9%94%AE%E5%80%BC%E8%A1%A8%E5%8D%95%E6%95%B0%E6%8D%AE%E4%B8%AD%E6%B7%BB%E5%8A%A0%E8%87%AA%E5%AE%9A%E4%B9%89%E5%88%86%E9%9A%94%E7%AC%A6.png)
我有“键:值”形式的数据,其中键是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/ /:/'
第二个替换用冒号替换最后一个剩余空格 - 它不会被第一个替换替换,因为没有逗号与之配合。