По сути, ваш подход терпит неудачу, потому что ваше выражение каждый раз считывает только одну строку в свое пространство шаблонов, поэтому оно никогда не сможет сопоставить несколько пустых строк (даже если вы могли бы построить подходящее регулярное выражение).
Однако возможно считывать несколько строк в пространство шаблонов с помощью команды N
в цикле. За возможным исключением многострочного модификатора GNU sed, новые строки представлены в пространстве многострочного шаблона как последовательности \ n
, поэтому для проверки пустых строк вам нужно будет использовать \ n \ n
а не ^ $
. Так, например:
sed -E '
/GROUP DIRECTORY CATEGORIES/ {
:a # label the start of a loop
$!N # if not at the end of file, read & append the next line
s/((\n\n.*){2})\n\n/\1\n,;\n/ # match and capture 2 instances of successive newlines,
# followed by a 3rd; if found, replace the 3rd by \n,;\n
t # branch out of the loop on successful replacement
ba # else branch back to label 'a'
}' file1
В GNU sed последовательность t; ba
может быть заменена на Ta
.
77 МГц — это частота пикселей, а не частота обновления по вертикали. Частота обновления по вертикали измеряется в Гц, а не в МГц.
Взгляните на режим:
Clock 77.000 MHz, 344 mm x 193 mm
1366 1382 1398 1628 hborder 0
768 771 785 788 vborder 0
1366
— количество «активных» пикселей в строке, а 768
— количество «активных» строк. Это пиксели, которые вы видите. Существуют также «пустые» пиксели и линии, а также «граничные» пиксели и линии, которые вставляются для выравнивания часов.
Видите одну метрику, которая говорит 1628x788
? Это тот, который включает в себя все активные, пустые и граничные пиксели. Если вы разделите 77 МГц (или 77 000 000 Гц) на (1628 * 788), вы увидите, что вы получите примерно 60,02 Гц.