Не могли бы вы попробовать следующее, это даст вам вывод в том же порядке, в котором 1-е поле занято в Input_file.
awk '!a[$1]++{b[++count]=$1} {c[$1]++} END{for(i=1;i<=count;i++){print b[i],c[b[i]]}}' Input_file
Вывод будет следующим.
Breakfast 1
Lunch 3
Dinner 4
Объяснение: Теперь добавим объяснение вышеприведенного кода.
awk '
!a[$1]++{ ##Checking condition if current lines first field is having only 1 count in array a then do following.
b[++count]=$1 ##Creating an array named b whose index is variable count whose value is increasing number by 1 and value is $1.
}
{
c[$1]++ ##Creating an array named c whose index is $1 with increment value by 1.
}
END{ ##Starting END block of awk code here.
for(i=1;i<=count;i++){ ##Starting a for loop from i=1 to till value of count here.
print b[i],c[b[i]] ##Printing value of array b whose index is variable i and printing value of array c whose index is value of array b.
}
}' Input_file ##Mentioning Input_file name here.