Наслаждайтесьawkрешением:
awk -F, '{ diff=$2-$3; if(a[$1]>diff || !a[$1]) { a[$1]=diff; b[$1]=$2 FS $3 } }
END{ for(i in a) print i,b[i] }' OFS=',' yourfile
Выход:
c1,5,3
c2,8,4
Сделайте это с помощьюdatamash
:
datamash -g1 -s -H count 1 < infile
Выход:
GroupBy(City) count(City)
Chennai 2
Cork 1
Manhattan 2
Использовать встроенный Linux -в командах sort
иuniq
:
cat DATAFILE | sort | uniq --count
Это даст вам что-то вроде:
2 Chennai
1 City
1 Cork
2 Manhattan
Пояснение:Здесь используется команда uniq
, которая обычно удаляет повторяющиеся строки, оставляя только один экземпляр. С опцией «--count» выдает дополнительный подсчет количества повторений. Для того, чтобы uniq
работало, строки должны быть отсортированы -, иначе дубликатов не будет в последовательных строках, как это необходимо. sort
делает именно это, сортирует строки по алфавиту.
Вам нужно расположить их в другом порядке столбцов? Нужно ли игнорировать первую строку? Если да, пожалуйста, сообщите нам, могут ли названия городов содержать более одного слова.