Если вы просто хотите разделить на первые :
, вам будет проще использовать bash
манипуляции со строками:
key=${LINE%%:*}
value=${LINE#*:}
%%
обрезает самую длинную строку, соответствующую ее регулярному выражению (:*
), в конце строки, а #
удаляет самую короткую строку, которая находится в начале строки.
например,
$ LINE="a:b:c"
$ key=${LINE%%:*}
$ value=${LINE#*:}
$ echo $key
a
$ echo $value
b:c
ОК, поскольку в вашей оболочке этого нет, вы можете использовать sed
:
key=$(echo "$LINE" | sed 's/:.*$//')
value=$(echo "$LINE" | sed 's/[^:]*://')
Первый находит и удаляет все, что находится между двоеточием и концом строки, и, поскольку (большинство, включая sed
) регулярные выражения по умолчанию являются жадными, это будет все, начиная с первого двоеточия. Второй удаляет все, вплоть до первого двоеточия.