Следующий код должен работать:
sed ':a;/https/!{N;ba};s/\n//g'
По сути, это время l oop, которое добавляет строку за строкой, если исходящая многострочная строка не содержит https
; как только добавляется одна строка, содержащая https
, в то время как l oop отменяется (так как команда b
не выполняется), и все встроенные символы новой строки \n
удаляются с помощью команды s
.
Более подробно, скрипт (между одинарными кавычками) можно переписать так:
:a # label you can jump to with a t or b command
/https/!{ # if the line does not match "https" do what's in {…}:
N # append the next line to the current one (putting "\n" in between)
ba # branch to the line labelled as ":a"
}
s/\n//g # change all newlines to empty strings (i.e. remove all newlines for the current multi-line)
Соответствующий псевдокод будет
begin
while line does not contain "https" {
append another line
}
remove all newlines