Extrahieren Sie Text zwischen zwei Zeichenfolgen in verschiedenen Zeilen
Ich habe eine große E-Mail-Datei mit den folgenden zufälligen Hosts:
......
HOSTS: test-host,host2.domain.com,
host3.domain.com,another-testing-host,host.domain.
com,host.anotherdomain.net,host2.anotherdomain.net,
another-local-host, TEST-HOST
DATE: August 11 2015 9:00
.......
Die Hosts werden immer durch ein Komma getrennt, aber sie können in eine, zwei oder mehrere Zeilen aufgeteilt werden (ich kann das nicht kontrollieren, das machen E-Mail-Clients leider).
So muss ich den gesamten Text zwischen der Zeichenfolge "HOSTS:" und der Zeichenfolge "DATE:" extrahieren, ihn umbrechen und die Kommas durch neue Zeilen ersetzen, wie folgt:
test-host
host2.domain.com
host3.domain.com
another-testing-host
host.domain.com
host.anotherdomain.net
host2.anotherdomain.net
another-local-host
TEST-HOST
So weit bin ich darauf gekommen, aber ich verliere alles, was mit "HOSTS" auf der gleichen Linie ist:
sed '/HOST/,/DATE/!d;//d' ${file} | tr -d '\n' | sed -E "s/,\s*/\n/g"