Zawartość mojego filenamepliku jest następująca (na przykład):
My block of line starts from here
START
First line
second line
third line
END
and end to here for example.
Chcę zastąpić blok wierszy między STARTi ENDtylko jednym słowem, na przykład słowem SINGLEWORD. Jak poniżej:
My block of line starts from here
SINGLEWORD
and end to here for example.
Za pomocą tego polecenia mogę znaleźć mój blok linii:
grep -Pzo "START(.|\n)*END" filename
A wynik uruchomienia powyższej komendy będzie taki:
START
First line
second line
third line
END
Następnie użyłem tego polecenia, aby połączyć wszystkie linie w jedną linię:
LAST_RESULT | sed -e :a -e '/$/N; s/\n/ /; ta'
Wtedy uzyskam ten wynik:
START First line second line third line END
I moim ostatnim poleceniem LAST_RESULTS | sed 's/.*/SINGLEWORD/'zmieniam je na "SINGLEWORD"i otrzymuję ten wynik.
SINGLEWORD
Teraz chcę: Jak mogę użyć tego polecenia (lub polecenia sugestii) i zastąpić (w miejscu) mój blok wierszy słowem „POJEDYNCZE”? Ostateczny wynik będzie podobny do tego pliku:
My block of line starts from here
SINGLEWORD
and end to here for example.
sedpowinno być możliwe, ale prawdopodobnie trudniejsze do odczytania (Spójrz na to pytanie )