Если вы не уверены, в каком столбце будет расположена строка из 32 символов, вы можете использовать следующее для проверки длины строки для каждой переменной. Только если это всегда 32 символа:
3 варианта файла vdisk:
Файл vdisk1 имеет 32 символьную строку как $ 10
745 ptr3p_002 0 io_grp0 online 16 B1_DID_T1N_ABG1 11.00GB striped 745 1 60050768019181B398000000000004DF 0 1 not_empty 0 no 0 16 B1_DID_T1N_ABG1 no no 745 ptr3p_002 master
Файл vdisk2 имеет 32-символьную строку как $ 11
745 ptr3p_002 0 io_grp0 online 16 B1_DID_T1N_ABG1 11.00GB striped 1 1 60050768019181B398000000000004DF 0 1 not_empty 0 no 0 16 B1_DID_T1N_ABG1 no no 745 ptr3p_002 master
Файл vdisk3 содержит 32 символа строки $ 12
745 ptr3p_002 0 io_grp0 online 16 B1_DID_T1N_ABG1 11.00GB striped 745 ptr3p_002 60050768019181B398000000000004DF 0 1 not_empty 0 no 0 16 B1_DID_T1N_ABG1 no no 745 ptr3p_002 master
Это сыро, но работает:
#!/bin/bash
for each in vdisk*
do
var10=$(awk '{print $10}' $each)
var11=$(awk '{print $11}' $each)
var12=$(awk '{print $12}' $each)
for i in $var10 $var11 $var12
do
check=${#i}
if [ $check -eq 32 ]; then
char32=$i
fi
done
awkout=$(awk '{print $1, $2, $4, $5, $7, $8}' $each)
echo "$awkout $char32" | xargs
done
Вывод на все файлы:
745 ptr3p_002 io_grp0 online B1_DID_T1N_ABG1 11.00GB 60050768019181B398000000000004DF
745 ptr3p_002 io_grp0 online B1_DID_T1N_ABG1 11.00GB 60050768019181B398000000000004DF
745 ptr3p_002 io_grp0 online B1_DID_T1N_ABG1 11.00GB 60050768019181B398000000000004DF