Допустим, очень большой файл состоит из строк типа
.*sha-la-la[0-9].*tra-la-la[0-9].*
Задача — посчитать все tra-la-la1…tra-la-la9, у которых одинаковое sha-la-la. Так как счётчика в sed не предусмотрено (за исключением =, но я не придумал, как бы его здесь можно использовать, не сбрасывая временных данных в файл), то решено было привести файл к следующему виду, выделив по строке на каждую sha-la-la
sha-la-la tra-la-la1 tra-la-la2 tra-la-la3 …
А потом, когда объём таким образом уже полегчает, как-нибудь заменить все эти tra-la-la на собственно их число. Пока что я надумал только использовать для этого regexp вида
/.*(sha-la-la[0-9]).*(tra-la-la[0-9]).*/ {;;}
но перед этим как бы внутри {…} знать текущие \1 и \2?