В вашем / etc / fstab вы автоматически монтируете компакт-диск, когда во время загрузки выдается команда «mount -a».
Измените
/dev/sr0 /media/cdrom0 udf,iso9660 user,exec 0 0
на
/dev/sr0 /media/cdrom0 udf,iso9660,user,exec,noauto 0 0
Вот решение, использующее awk
. Он накапливает значения в массив.
awk -F ":" '{count[$2]+=$1} END {for (key in count) print key, count[key]}' awk_data.txt
А вот версия, использующая скрипт bash
:
#!/usr/bin/env bash
declare -A count
while read line; do
key=${line##*:}
cnt=${line%%:*}
count[$key]=$(($cnt + ${count[$key]=0}))
done < "$1"
for K in "${!count[@]}"; do echo $K ${count[$K]}; done
И еще bash
версия из комментариев, использующая IFS =:
#!/usr/bin/env bash
declare -A count
while IFS=: read -r cnt key; do
count[$key]=$(($cnt + ${count[$key]=0}))
done < "$1"
for K in "${!count[@]}"; do echo $K ${count[$K]}; done
Возможно, вы также захотите взглянуть на утилиту GNU datamash. Пример (table.txt из PO):
$ sort -t: -k 2 table.txt | datamash -t: -g 2 sum 1 collapse 1
abc:4:1,3
def:2:2
xyz:11:10,1
-t:
разделителем полей является :-g 2
группировка по (предварительно отсортированному) второму столбцуsum 1
суммировать соответствующие значения в столбце 1collapse 1
и также свернуть их в "," отдельный список