Вот один способ:
$ awk '{ for (j = 2; j <= NF; j++) a[$1][j]+=$j }
END {
for(i in a){
printf "%s", i;
for(field in a[i]){
printf " %s",a[i][field]
}
print ""
}
}' file
AC1481676 6 5 6 8
AC1481523 6 6 6 6
Обратите внимание, что я начал j
отсчет с 2, поскольку нам не нужно первое поле и до NF (количество полей) вместо 200. Таким образом, он будет работать для произвольного количества полей, если оно> = 2. Затем скрипт использует многомерный массив ( a [$ 1] [j ]
), так что для каждого первого поля существует массив всех связанных значений. Наконец, мы перебираем массив, при необходимости распечатывая.
Если вы сначала сделаете устройство только для чтения:
blockdev --setro /dev/foo
, тогда файловая система не сможет писать на него, поэтому вам не нужно знать никаких специальных параметры файловой системы, зависящие от типа.