Estou tentando aprender o awk no momento e estou testando no comando disk utility
.
Aqui está a saída quando eu corro Disk Utility list disk0
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *251.0 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_HFS Macintosh HD 145.4 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
4: Linux Filesystem 48.0 GB disk0s4
5: Microsoft Basic Data WINDOWS 38.0 GB disk0s5
6: Linux Swap 18.8 GB disk0s6
Agora, se eu executar diskutil list disk0 | awk 'NR > 2 {print}'
, recebo isso como minha saída.
0: GUID_partition_scheme *251.0 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_HFS Macintosh HD 145.4 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
4: Linux Filesystem 48.0 GB disk0s4
5: Microsoft Basic Data WINDOWS 38.0 GB disk0s5
6: Linux Swap 18.8 GB disk0s6
Como você pode ver, a saída é a esperada. O problema agora é quando tento imprimir US $ 2, US $ 3 e US $ 4. A saída às vezes imprime "HD" quando deve imprimir o tamanho e outros problemas como esse.
diskutil list disk0 | awk 'NR > 2 {print $1}'
0:
1:
2:
3:
4:
5:
6:
Resultado esperado
diskutil list disk0 | awk 'NR > 2 {print $2}'
GUID_partition_scheme
EFI
Apple_HFS
Apple_Boot
Linux
Microsoft
Linux
Resultado esperado
GUID_partition_scheme
EFI
Apple_HFS
Apple_Boot
Linux Filesystem
Microsoft Basic Data
Linux Swap
Como você pode ver as saídas do comando conforme esperado até o sistema de arquivos Linux. Isto é devido a haver espaços na palavra?
Isso agora afeta tudo o que vem depois dele, por exemplo
diskutil list disk0 | awk 'NR > 2 {print $3}'
exibe
*251.0
EFI
Macintosh
Recovery
Filesystem
Basic
Swap
quando deve aparecer
EFI
Macintosh HD
Recovery HD
Windows
Como eu obteria o formato AWK como seria de esperar?