в скрипте Korn Shell У меня есть большой объем данных в строковой переменной contents
, которая соответствует следующему синтаксису:
account_id_0:group_id_0:name_0
account_id_1:group_id_1:name_1
...
account_id_N:group_id_N:name_N
Я хочу разбить строку на символ :
каждыйтретий экземпляр, чтобы я мог сгенерировать три другие строки accounts
, groups
и names
, имеющие формат:
accounts = account_id_0,account_id_1,...,account_id_N
groups = group_id_0,group_id_1,...,group_id_N
names = name_0,name_1,...,name_N
Причина, по которой я хотел бы хранить их в строке, а не в массиведля переносимости между средами.
Могу ли я добиться этого, используя что-то вроде sed
, cut
или awk
команды?
текущее регулярное выражение, которое я использую для сбора учетных записей:
[a-zA-Z][0-9]+(?:([a-zA-z]*[0-9]*)*)(?:([a-zA-Z]*[0-9]*)*)
Но я чувствую, что есть более эффективная альтернатива.
Я попытался достичьжелаемый вывод, используя комбинацию этого решения и этого решения однако в первом случае не хватает нужного мне повторения, а последнее - для манипулирования файлами, а не для строк.