У меня есть строка, подобная
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"