sudo dmidecode --type 17
возвращает информацию о физической оперативной памяти.
Попробуйте этот скрипт sed:
/^Avail/{
s/[^=]*=([^ ]*).*/\1/;H
}
/^Chosen/{
s/.*=//;G;h;x;y/\n/,/
s/,/ is ab in /;s/$/,/
/(.*) is.*,\1,/s/ab/pre/
s/(ab|pre) in,(.*),/\1sent in \2/
p;s/.*//;x
}
Пользовательский формат вывода:(не был указан OP)
sesh@pc:~/unix$ sed -nrf script.sed input.txt
1655 is absent in 1654
1301 is present in 1300,1301,1303
Счет в sed очень труден. Например, вы можете передать grep -c absent
для подсчета всех событий, когда пользователь выбрал идентификатор, отсутствующий в доступных идентификаторах.
Это может быть то, что вы ищете, без ожидаемого результата это предположение, но, надеюсь, вы сможете сделать массаж в соответствии с вашими потребностями:
$ cat tst.awk
BEGIN { FS="[:= ]" }
$1 == "Chosen" {
if ( $5 in avail ) {
availCnt++
str = ""
}
else {
notAvailCnt++
str = " not"
}
userCnt++
printf "User %s chose %s which was%s available\n", $4, $5, str
delete avail
next
}
NF { avail[$5] }
END {
printf "%d users chose available %d times and not available %d times\n", userCnt, availCnt, notAvailCnt
}
.
$ awk -f tst.awk file
User 75 chose 1655 which was not available
User 10 chose 1301 which was available
2 users chose available 1 times and not available 1 times
Описанное выше будет работать при использовании любого awk в любой оболочке на каждом компьютере UNIX.