Если никогда не бывает более двух последовательных экземпляров pattern
, и у вас есть GNU sed, тогда:
sed '/^pattern/ {$!N; /\n[0-9]/b; s/$/\n1000/M}' file
pattern.d
17.91
17.55
pattern.b
1000
pattern.a
7.21
9.34
pattern.c
1000
Как это работает:
pattern
, то
b
ранжировать (т.е. перейти к следующей строке ); else1000
Модификатор M
, специфичный для GNU, позволяет $
соответствовать либо \n
или $
, чтобы он обрабатывал как «обычный» случай, так и случай EOF, когда не добавляется следующая строка.