Awk匹配和循环要求

时间:2015-08-04 11:47:31

标签: awk

我很难理解我在这里做错了什么。输出会重复查看磁盘的次数:

Parted -l |
awk -F '[ :] '/^Disk \//{print $2}' |
while read LINE; do
    blkid $LINE1 |
    awk -F ' ' '{
        for(i=1;i<=NF;i++) {
            print $i;
            if($i ~ /UUID*/) {
                print $i;
                exit
            }
        }
    }';
done

如果我的系统中有三个磁盘,例如/ dev / sda1 / dev / sdb1 / dev / sdc1

输入上述命令集:

/dev/sda1: LABEL="/" UUID="feg45687-576466-676445-6536-7534-5784326797fbfg" TYPE="ext4"

以上命令的当前输出:

UUID="feg45687-576466-676445-6536-7534-5784326797fbfg"
UUID="tug45687-576466-676445-6536-7534-68546df" 
UUID="feg45687-576466-676445-6536-7534-9908536lk"

UUID="feg45687-576466-676445-6536-7534-5784326797fbfg"
UUID="tug45687-576466-676445-6536-7534-68546df" 
UUID="feg45687-576466-676445-6536-7534-9908536lk"

UUID="feg45687-576466-676445-6536-7534-5784326797fbfg"
UUID="tug45687-576466-676445-6536-7534-68546df" 
UUID="feg45687-576466-676445-6536-7534-9908536lk"

预期产出是什么:

UUID="feg45687-576466-676445-6536-7534-5784326797fbfg"
UUID="tug45687-576466-676445-6536-7534-68546df" 
UUID="feg45687-576466-676445-6536-7534-9908536lk"

因此,如果我有三个磁盘,我会重复三次相同的UUID线。

任何方式移动到下一个LINE而不重复?

1 个答案:

答案 0 :(得分:0)

您的问题(或者,至少是您的一个问题)可能在以下几行:

while read LINE; do
    blkid $LINE1 |

您已阅读$LINE,但您引用了$LINE1,这是一个不相关且可能未初始化的变量,可能导致blkid每次都列出所有设备。

修正:选择一个名称或另一个名称 - 不要同时使用这两个名称。