Linux Bash и Scripting - COUNT ROWS из текстового файла

Это натолкнуло меня на мысль просто переустановить glibc-common http://hpc.mtech.edu/scyld-doc/administration-guide/x3137.html

yum reinstall glibc-common

Это не сработало, но тогда я был уверен, что у меня есть нужные "вкусности", и проблема была только в моем вмешательстве.

build-locale-archive все еще захлебывался во временном каталоге, поэтому я просто сделал rm -rf /usr/lib/locale/tmp, после чего build-locale-archive заработал.

Затем я перезапустил nginx и mysql, но я все еще был не в сети. Мне пришлось перезагрузить систему. Затем все заработало.

0
05.12.2018, 00:18
3 ответа

Для данного примера попробуйте:

Только для одного пользователя:

awk -F'|' '$1=="user1"{i=$1;u[$1]++;m[$1]+=$3};END{print i,"processes:",u[i],"minutes:",m[i]}' file1
user1 processes: 4 minutes: 22

Для всех пользователей:

awk -F'|' '++u[$1]{m[$1]+=$3};END{for (i in u) print i,"processes:",u[i],"minutes:",m[i]}' file1
user1 processes: 4 minutes: 22
user2 processes: 2 minutes: 2
0
28.01.2020, 05:05

NF — это «количество полей», т.е. количество столбцов. В этом случае каждая строка имеет 3 столбца, поэтому вывод всегда равен 3, независимо от количества совпадений. Вам нужно иметь дополнительный счетчик для каждого найденного совпадения, т.е. procниже.

$ awk -F '|' '$1 == "user1" {proc += 1; sum += $3} END {print "user has run " proc " processes for a total of "  sum " minutes" }' textfile
user has run 4 processes for a total of 22 minutes
0
28.01.2020, 05:05

Проблема в том, что NF — это не количество совпавших строк, а количество полей (столбцов ). Например, вы можете определить другую переменную, подобную «сумме», и использовать ее для подсчета.

-1
28.01.2020, 05:05

Теги

Похожие вопросы