如何使用awk在行组中添加缺少的行

如何使用awk在行组中添加缺少的行,awk,Awk,大家好,很抱歉这个简单的问题,我有一个文本文件列表,其中包含我正试图从中提取数据的pc规格。使用: awk '/Disk\:/ && !/USB/ ||FNR==1 {c++;if(FNR==1)c=0;print c " " $0}' *.txt > file 我可以提取每个系统的磁盘数量和型号,如下所示 0 SYSTEM 1 Disk: ATA WDC WD5000AAKX-0 SCSI Disk Device (465,8 GB) 0 SYSTEM 1 Disk:

大家好,很抱歉这个简单的问题,我有一个文本文件列表,其中包含我正试图从中提取数据的pc规格。使用:

awk '/Disk\:/ && !/USB/ ||FNR==1 {c++;if(FNR==1)c=0;print c " " $0}'  *.txt > file
我可以提取每个系统的磁盘数量和型号,如下所示

0 SYSTEM
1 Disk: ATA WDC WD5000AAKX-0 SCSI Disk Device (465,8 GB)
0 SYSTEM
1 Disk: ST3160815AS (149,0 GB)
0 SYSTEM
1 Disk: WDC WD5003AZEX-00MK2A0 (465,8 GB)
2 Disk: WDC WD5003AZEX-00MK2A0 (465,8 GB)
3 Disk: WDC WD40EFRX-68WT0N0 (3,6 TB)
每个系统最多可以有四个磁盘,我正在尝试添加缺少的行,这样我就可以将文件转换为CSV。所需的输出如下:

0 SYSTEM
1 Disk: ATA WDC WD5000AAKX-0 SCSI Disk Device (465,8 GB)
2 Disk: NO DISK
3 Disk: NO DISK
4 Disk: NO DISK
0 SYSTEM
1 Disk: ST3160815AS (149,0 GB)
2 Disk: NO DISK
3 Disk: NO DISK
4 Disk: NO DISK
0 SYSTEM
1 Disk: WDC WD5003AZEX-00MK2A0 (465,8 GB)
2 Disk: WDC WD5003AZEX-00MK2A0 (465,8 GB)
3 Disk: WDC WD40EFRX-68WT0N0 (3,6 TB)
4 Disk: NO DISK
我搜索了论坛,找到了两个示例,它们都添加了n行的缺失行和分组行,但没有设法将两者结合起来。
任何帮助都将不胜感激。

这是对原始脚本的更新。它通过一个小的更新保持相同的逻辑

awk '(NR!=1) && (FNR==1) { for(c++;c<=4;++c) { print c" Disk: NODISK" }}
     (FNR==1) { c=0; print c,$0 }
     /Disk\:/ && !/USB/ { print ++c,$0 }
     END{ for(c++;c<=4;++c) { print c" Disk: NODISK" }}' *txt

awk'(NR!=1)和&(FNR==1){对于(c++;c)来说,第一个很接近,但没有显示最后一个无盘行,这一个非常有用!也感谢您的解释。