Я определенно заинтересован в получении книги на awk. Я был выигран, несмотря на то, что играл с ним немного времени. Однако, в то же время, у меня есть проблема, которую я могу решить исключительно с помощью [g] awk. Для демонстрации я буду использовать вывод fdisk. В этом примере желаемый конечный результат будет выглядеть примерно так:
Disks: 2 [240 GB total]
sda=120 GB
sdb=120 GB
Вот что у меня есть:
fdisk -l 2>/dev/null | awk '/^Disk \/dev\/[vsh]d./ {bytes+=$5} END {print "Disks: "NR" ["; gb=bytes/1024/1024/1024; print gb" GB total]"}'
Во всяком случае, мой NR печатает 73 .. на моем ноутбуке с двумя жесткими дисками. Это я не понимаю. Пока хорошо .. Я, может быть, на полпути. Любые советы или краткие учебники будут с благодарностью!
После двух основных отличных ответов я получил следующее:
echo DISKS: $(fdisk -l 2>/dev/null | awk -F/ '/^Disk \/dev\/[vsh]d.|^Disk \/dev\/xvd./{print$3}' | awk '{d++;bytes+=$4;disk[$1]=$2" "$3}END{gb=bytes/1024/1024/1024; printf gb" GB total, "d" disks\n";for (i in disk) print " "i,disk[i]}' | sed -e "s/,$/ /" -e "s/: / /")
, который дал мне вывод, как это:
DISKS: 78.3585 GB total, 2 disks
sda 80.0 GB
sdb 4110 MB
С нетерпением жду того дня, когда я смогу сделать это все в одной команде awk без sed. :) Но пока, спасибо, ребята!