Json - это текст, он не сортируется.
Json нужно преобразовать в объект (модель данных). Но и там сортировать можно только списки, а у вас не списки.
Смотрите всякие SimpleJson, Newtonsoft и прочие.
using System.Linq;
var list = new List<int>() { 1, 5, 5, 4, 7, 5 };
var gr = list.GroupBy(e => e);
foreach (var line in gr)
{
Console.WriteLine("{0} => {1}", line.Key, line.Count());
}
Вам нужен не Replace, InfexOf. Находите все вхождения искомого текста, решаете которую вам нужно заменить и клеити новую строку как: до_искомого_текста + замена + после_искомого_текста.
И вы читаете все 600Мб в память.
Ну и в многопотоке это будет работать только с блокировкой файла на время перезаписи. При таком размере это выльется в существенный лаг. На вашем месте я бы пересмотрел концепцию.
А так: ищите первый символ конца строки, запоминаете позицию. Зачет читаете кусок после неё и записываете в начало файла, читаете дальше и дописываете после первого блока и так до конца. В конце уже обрезаете размер файла под новый размер.
Написать анализатор, который будет действовать как человек. Что там у нас первое - скобки. Значит ищем блоки те что в скобка и натравливаем на них анализатор снова. Далее выявляем блоки деления/умножения, считаем их, результат засовываем обратно. Затем делаем сложение/вычитание, ну и так далее.
П.С. кстати интересное задание.