我正在尝试使用下面的命令打印出多列,但是它不起作用。 有人可以检查我想念的东西吗。
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
答案 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