Невозможно напечатать несколько столбцов - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь распечатать несколько столбцов с помощью приведенной ниже команды, но она не работает.Может кто-нибудь проверить, что мне не хватает.

grep -i "$(echo ${vdisk}| awk '{print $1,$2}' 2>/dev/null)" ${GBL_TEMP}/vdisk_*

с помощью приведенной выше команды, она напечатает все и не будет анализировать $ 1 и $ 2

, поэтому я попробовал это

grep -i "$(echo ${vdisk}| awk '{print $1,$2,$4,$5,$7,$8,$10}' 2>/dev/null)" ${GBL_TEMP}/vdisk_*

но все равно не повезло.

Я пытаюсь напечатать эти столбцы {print $1,$2,$4,$5,$7,$8,$10}

вывод $ vdisk

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

1 Ответ

0 голосов
/ 09 июля 2019

Если вы не уверены, в каком столбце будет расположена строка из 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...