Встречаемость чисел / слов в разных строках - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть файл со следующей структурой: имя ученика тема1 класс1 тема2 класс2 ...

Я выяснил, как подсчитать для каждого предмета, сколько учеников посетили, но я не знаю, как подсчитать для каждого предмета, сколько из них получили оценки выше 5.

Также мне нужна помощь в поиске для каждого предмета оценки классов и того, какой класс имел наибольшее число случаев.

Если бы кто-нибудь мог мне помочь, я был бы признателен!

File Content:
Robert Java 8 Algorithms 8 Math 6
Andrew Java 9 Algorithms 7 Math 6
Ben Java 5 Algorithms 10 Math 8
Jerry Java 7 Algorithms 5 Math 7
Terry Java 4 Algorithms 5 Math 9
Ross Java 5 Algorithms 9 Math 7


Desired output:
The subject Java was attended by 6 stundets. Number of students with grade bigger than or equal to 5: 5
The subject Algorithms was attended by 6 students. Number of students with grade bigger than or equal to 5: 6
The subject Math was attended by 6 students. Number of students with grade bigger than or equal to 5: 6

Occurance of grades:
5:
6:
7:
8:
9:

Occurance of grades for Math:
6:
7:
8:
9:

Что я получил так далеко:

awk ' { for (i = 2; i <= NF; i += 2) C[$i]++;} {for (j = 3; j <= NF; j += 2) B[$j]++;} END { for (var in C) print "The ",var," subject was attanded by " C[var], "students" ; for (var3 in B) print "The occurance of grade: ",var3," is : ", B[var3]; }'\n $1 

1 Ответ

0 голосов
/ 27 апреля 2018

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

$ awk '{for(i=2;i<NF;i+=2) 
          {k=$i; g=$(i+1); a[k]++; 
           c[k]+=(g>=5); 
           grades[k]=(k in grades?grades[k]:k) ORS g}} 

    END{for(k in a) print k, a[k], c[k]; 
        for(k in grades) print grades[k]}' file

Algorithms 6 6
Math 6 6
Java 6 5
Algorithms
8
7
10
5
5
9
Math
6
6
8
7
9
7
Java
8
9
5
7
4
5
Массив

a содержит количество субъектов и c для тех, которые соответствуют критериям >=5; grades имеет оценки по всем предметам. В блоке END вы перебираете массив / карту, чтобы выбрать сохраненные значения. Обратите внимание, что ваш счетчик "Java" неверен в опубликованном примере.

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