我有一个字符串
data1_data2_data3_data4@data5,data6
有时候,data5包含下划线作为字段分隔符,这很丑陋。
我想用类似以下的方式读取这些数据片段:
IFS="_@," read d1 d2 d3 d4 d5 d6 <<< "$input"
当data5中包含下划线时,问题就出现了。为了解决这个问题,我想用逗号(和@符号)替换前三个下划线。到目前为止,我发现最简单的方法是使用sed:
sed 's/_/,/; s/_/,/; s/_/,/; s/@/,/' <<< "$input"
但是重复三次相同的替换似乎效率很低。如果我需要重复5000次会怎样呢?
有没有办法告诉sed重复某个替换一定次数?
为了完整起见,这是示例输入:
input="data1_data2_data3_data4@d_a_t_a_5,data6"
IFS="," read d1 d2 d3 d4 d5 d6 <<< "$input"
期望输出结果:
d1=="data1"
d2=="data2"
d3=="data3"
d4=="data4"
d5=="d_a_t_a_5"
d6=="data6"
data1_data2
和d_a_t_a_5
中的下划线?后一种情况中的下划线是如何与周围字段区分开来的? - TrebledJ