Вы используете команды CSI s
и CSI u
которые имеют несовместимые интерпретации в зависимости от реализации.
Первый может быть или, "Сохраняют позицию курсора" или "Эмулятор терминала сброса", последнее существо закрытый интерфейс Соляриса.
Необходимо пользоваться библиотекой как ncurses для достижения портативной экранной обработки, но если Вы все еще хотите к hardcode escape-последовательности, это могло бы сделать то, что Вы ожидаете:
printf ( "\0337\033[6;45H %s \0338", asctime (timeinfo) );
Попробуйте так:
$ awk -v SUBSEP=" " '
{a[$1,$2]++;b[$1,$2] = (b[$1,$2] && $3 > b[$1,$2]) ? b[$1,$2] : $3}
END {
for (i in a) {
print i,a[i],b[i];
}
}
' file
A B 2 1990
A C 2 2001
A D 2 2001
B C 1 2013
Еще короче, если можно изменить порядок следования полей:
$ sort -n -k1 -k2 -k3 file | uniq -c -w 3
2 A B 1990
2 A C 2001
2 A D 2001
1 B C 2013