Как добавить второй столбец на основе столбца 1 в awk?Например, я использовал следующий скрипт - PullRequest
2 голосов
/ 25 июня 2011

zcat *.gz | awk '{print $1}' |sort| uniq -c | sed 's/^[ ]\+//g' | cut -d' ' -f1 | sort | uniq -c | sort -k1n

Я получаю следующий вывод:

      3 648
      3 655
      3 671
      3 673
      3 683
      3 717
      4 18
      4 29
      4 31
      4 34
      4 652
      5 12
      6 24
      6 33
      7 13
     12 10
     13 9
     14 8
     33 7
     73 6
    166 5
    383 4
   1178 3
   3945 2
  26692 1

Я не хочу повторений в моем первом столбце.Пример: если мой первый столбец равен 3, я должен добавить все значения во втором столбце, которые связаны с 3. Спасибо

Ответы [ 2 ]

2 голосов
/ 25 июня 2011

Решение с использованием массивов в awk

{
    a[$1]=a[$1]+$2
}
END {
    for (i in a)
        printf("%d\t%d\n", i, a[i])
}

Передайте вывод через sort -n еще раз, чтобы получить его в порядке возрастания

$ awk -f num.awk numbers | sort -n
3       4047
4       764
5       12
6       57
7       13
12      10
13      9
14      8
33      7
73      6
166     5
383     4
1178    3
3945    2
26692   1
0 голосов
/ 25 июня 2011
awk 'NF == 1 {c=$1; print $0} NF>1 {if (c==$1) {print "\t" $2} else {c=$1; print $0}}'

может сделать это, но, пожалуйста, обратите внимание, что отступ может быть неправильным, так как я использовал простую вкладку \t выше.

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...