У меня есть потенциальные входы, которые будут поступать из команды read -e -p
в сценарии bash. Например, пользователь будет вводить L50CA
. Некоторые другие возможности, которые пользователь может ввести, заключаются в следующем: K117CB
, K46CE2
, или V9CE1
.Regex Matching for Bash
мне нужно разбить прочитанного в Я читал в так:.
read -e -p "What first atom? " sel1
, то я хотел бы сделать массив как это (но это не будет отделяться):
arr1=($sel1)
Но мне нужно, чтобы отделить массив, так что
${arr1[0]}
равна L ${arr1[1]}
равна 50 и ${arr1[2]}
равен CA
Это разделение должно работать с другими возможными форматами ввода пользователя, такими как перечисленные выше. Кажется, Regex это способ сделать это. Я могу выделить первые два совпадения ввода со следующими регулярными выражениями: ^\D
и \d*(?=\w)
Мне нужна помощь, соответствующая третьему компоненту и реализующая его в массив. В качестве альтернативы, это нормально, чтобы разбить пользовательский ввод на три новые переменные. Или мы можем разместить пробел между каждым из совпадений, так что L50CA
преобразуется в L 50 CA
, потому что тогда arr1=($sel1)
будет работать.
Благодарим за помощь.
Что расщепляется 'K46CE2'? 'K',' 46', 'CE2'? Или 'K',' 46', 'CE',' 2'? –
Он разделился бы на K 46 CE2. Это нормально, если они выходят отдельно, как они это делали с ответом jm66, потому что тривиально просто объединить 3-ю и 4-ю позицию. – PhysicalChemist