无法打印多列

时间:2019-07-08 12:06:33

标签: bash shell unix scripting

我正在尝试使用下面的命令打印出多列,但是它不起作用。 有人可以检查我想念的东西吗。

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 :(得分:0)

如果不确定32个字符串将位于哪一列中,则可以使用以下命令测试每个变量的字符串长度。仅当其始终为32个字符时:

3个文件虚拟磁盘的变体:

文件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