Zawartość mojego filename
pliku 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 START
i END
tylko 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.
sed
powinno być możliwe, ale prawdopodobnie trudniejsze do odczytania (Spójrz na to pytanie )