Auf einer simplen Ebene, dies tut mehr oder weniger, was Sie fragen:
grep -v "berry" original.txt; echo "berries:"; sed -ne '/berry/s/^/ /p' original.txt
Beispielausgabe
apple
mango
orange
berries:
blueberry
raspberry
strawberry
blackberry
Das sagt ... finden Sie alle Linien NICHT "berry" in original.txt
enthalten, weil grep -v
eine negative Suche ist. Dann druckt es den Titel "Beeren". Dann startet ein neuer sed
mit -n
, so dass standardmäßig nichts ausgedruckt wird. Auf Zeilen, die "berry" entsprechen, ersetzt es den Anfang der Zeile durch 3 Leerzeichen und druckt dann die Zeile mit .
Es wird „Loganbeere“ finden, aber es wird nicht funktionieren erwartet, wenn „Erdbeeren“ im Original erscheinen. Es wird auch die „Beeren“ drucken Titel, auch wenn es keine Beeren in der Datei ...
Wo ist die Einrückung? – mikep
Woher kamen die 'Beeren:'? Können Sie uns die Logik erklären, die Sie implementieren möchten? Vielen Dank – Allan