это так, чтобы вы могли использовать разные единицы времени вместе
sleep 183965
тот же эффект, что и
sleep 2d 3h 6m 5s
Но второй вариант легче понять людям как два дня, три часа, шесть минут и пять секунд.
Чтобы получить список повторяющихся чисел и исключить все лишние процессы:
$ awk -F= '$1=="Global"{c[$2]++} END{for (num in c) if(c[num]>1)print num}' file.dat
33333
33337
Приведенный выше код использует =
в качестве разделителя полей. Если первое поле равно Global
, то мы отслеживаем в ассоциативном массиве c
количество раз, когда второе поле $2
появлялось в файле.
После того, как файл прочитан полностью, мы просматриваем массив c
и выводим все числа, число которых больше 1.
Как предложил glenn jackman в комментариях, мы могли бы просто напечатать число при его втором появлении:
$ awk -F= '++c[$2] == 2 {print $2}' file.dat
33333
33337
Вы можете изменить uniq -c
наuniq -d
:
$ grep -Po '(Global)=\K\d+' file.dat | sort | uniq -d
33333
33337
-d
печатает только повторяющиеся строки. Еще одна труба к wc -l
может подсчитывать эти строки. Также обратите внимание, что обе опции -P
и -o
для grep не являются стандартными для -, поэтому они будут доступны не во всех версиях grep
.
Использование любого awk в любой оболочке на каждом компьютере UNIX:
$ awk -F'=' '++cnt[$2] == 2{ dups++ } END{print dups+0}' file
2
Если вам нужно проверить Global
, тогда:
$ awk -F'=' '($1 == "Global") && (++cnt[$2] == 2){ dups++ } END{print dups+0}' file
2
+0
в END гарантирует, что вы получите числовой вывод(0
вместо нулевой строки ), даже если во входных данных нет дубликатов.