Как и обещал, вот подход, который я разработал перед написанием этого вопроса. Он работает и возможно это хороший подход, но он казался слишком запутанным для этой, казалось бы, простой задачи. Теперь кажется, что все не так уж плохо. :)
function printcounts() {
printf "%s", currentf1
for (i = 2; i <= 3; i++ ) {
printf "%s", FS countuniq [ i ]
}
printf "\n"
}
function resetvars() {
delete already_seen_value
for ( i = 2; i <= 3; i++ ) {
countuniq [ i ] = 0
}
}
$1 != currentf1 {
if ( NR != 1 ) {
printcounts()
}
currentf1 = $1
resetvars()
}
{
for ( i = 2; i <= 3; i++ ) {
if ( ! already_seen_value [ i ":" $i ] ) {
already_seen_value [ i ":" $i ] ++
countuniq [ i ] ++
}
}
}
END {
printcounts()
}
С изменениями, основанными на ответе chaos'а:
function printcounts() {
printf "%s", currentf1
for (i = 2; i <= 3; i++ ) {
printf "%s", FS countuniq [ i ] + 0
}
printf "\n"
# Reset vars
delete seenthis
delete countuniq
}
NR != 1 && currentf1 != $1 {
printcounts()
}
{
for ( i = 2; i <= 3; i++ ) {
if ( ++ seenthis [ i ":" $i ] == 1 ) {
countuniq [ i ] ++
}
}
currentf1 = $1
}
END {
printcounts()
}
(+ 0
в функции printcounts - для того, чтобы всегда выводилось число, так как в реальном случае используется разделитель полей запятой и игнорирование пустых полей, поэтому нулевой счет действительно возможен)
.
Я сам нашел решение. Я описываю это здесь, если это кому-то еще нужно.
Проблемный файл был /home/<username>/.config/menus/mate-applications.menu
. В моем случае было ясно, какая часть файла была повреждена и как последняя должна быть восстановлена (, если это не так, путь вперед будет заключаться в использовании самой новой из резервных копий с именем mate-applications.menu.undo-10
, расположенных в том же каталог ).
Я удалил каталог меню в .config
с помощью:
me@pc ~/.config $ rm -rf menus/
G -Ответ человека дал мне необходимую подсказку, я просто просмотрел файл /home/shimmy/.config/menus/mate -apps.menu, скопировал и вставилhttps://github.com/mate-desktop/mate-menus/blob/master/layout/mate-applications.menuв него (нашел через поиск)
Я полагаю, что попытка использовать перетаскивание -и -опускание в апплете меню вызвала проблему в моем случае.
В упомянутом файле /home/<username>/.config/menus/mate-applications.menu
в конце был неправильно отформатированный раздел XML. Что-то вроде<New>d</Old>
После исправления и сохранения, при следующем использовании апплет снова показывал приложения.