Немного трудно сказать без тестовых данных (a) , но, поскольку он состоит из двух разделов, мое первое предложение должно быть изменено:
sort myFile.txt >> SortedFile.txt
до:
sort myFile.txt > SortedFile.txt
Первый из них просто добавляет результаты к файлу, который может уже существовать, поэтому, если вы сделаете это дважды, вы получите два разрозненных раздела. То же самое для команды grep
, которую вы используете для обнаружения номеров строк.
Я бы ожидал, что если бы вы использовали один и тот же источник, вы бы получили два блока одинакового размера (что здесь не так), но я понятия не имею, что файл содержит до Вы добавили к нему.
Итак, попробуйте без добавления и посмотрите, есть ли у вас такая же проблема.
Другая вещь, которую я хотел бы задать себе: почему вы сортируете это? Мне кажется (хотя раньше я ошибался, просто попросите мою жену составить полный список), что единственным возможным вариантом использования здесь является подсчет количества каждого навыка. Мне трудно предусмотреть любую другую возможность, но, если у вас есть такая возможность, пожалуйста, сообщите нам, что может быть такой же лучший способ сделать это для другого варианта использования.
Если это подсчет является случаем, есть лучшие способы сделать это, чем сортировать его, вы можете просто посчитать их без учета порядка, например:
awk '{count[$1]++}END{for(key in count){print key" "count[key]}}'
См. Следующую команду в качестве примера:
pax> ( echo JavaScript; echo C; echo Java; echo JavaScript ) | awk '
...> {count[$1]++}END{for(key in count){print key" "count[key]}}'
Создает:
C 1
Java 1
JavaScript 2
(a) И три с лишним гига, вероятно, слишком много тестовых данных для публикации: -)