sed 笔记
目录
问题
将文本中偶数位置的冒号改为逗号。
输入:
34:40031:12635:suc:1:40093:4:40086
34:40031:15658:suc
29:40031:17066:suc:3:40086
期望输出:
34:40031,12635:suc,1:40093,4:40086
34:40031,15658:suc
29:40031,17066:suc,3:40086
解决方案
方案 1:使用 awk
awk -vRS=':' 'ORS=NR%2?",":":'
将 : 设为记录分隔符,根据行号奇偶决定输出分隔符。
方案 2:使用 sed(推荐)
sed -r 's/(:[^:]*):/\1,/g'
匹配冒号后跟任意非冒号字符再跟冒号的模式,将第二个冒号替换为逗号。
正则说明:
(:[^:]*)是第一个捕获组(用\1引用),匹配冒号和其后的非冒号字符\1表示引用第一个捕获组的内容- 可使用多个括号分组,依次用
\1、\2等引用