Не могли бы вы попытаться выполнить следующие действия в пределах одного awk
, используя разделитель полей -F
, установив его как =
или ;
для каждой строки, переданной awk
.
echo "$var1" | awk -F'=|;' '{print $2}'
AAAAA
echo "$var1" | awk -F'=|;' '{print $6}'
BBBB
OR
echo "$var1" | awk -F"=|;;;" '{print $2}'
AAAAA
echo "$var1" | awk -F"=|;;;" '{print $4}'
BBBB
Учитывая, что вам нужны эти выходные данные для переменных, если да, то вы можете использовать их как sed
и поместить их значения в массив, а затем использовать их. ИМХО именно поэтому создаются массивы, чтобы сэкономить наше время на создание N чисел переменных.
Создание массива с помощью sed:
array=( $(echo "$var1" | sed 's/\([^=]*\)=\([^;]*\)\([^=]*\)=\([^;]*\)\(.*\)/\2 \4/' ) )
Создание массива с помощью awk:
array=( $(echo "$var1" | awk -F"=|;;;" '{print $2,$4}') )
Выше будет создан массив со значениями AAAAA
и BBBB
, теперь для его извлечения вы можете использовать.
for i in {0..1}; do echo "$i : ${array[$i]}"; done
0 : AAAAA
1 : BBBB
Я использовал петлю for
для вашего понимания, можно использовать array[0]
для AAAAA
или array[1]
для BBBB
.