Вміст мого filenameфайлу такий (наприклад):
My block of line starts from here
START
First line
second line
third line
END
and end to here for example.
Я хочу замінити блок рядків між STARTі ENDлише одним словом, наприклад, на SINGLEWORD. Як і нижче:
My block of line starts from here
SINGLEWORD
and end to here for example.
Я можу знайти свій блок рядків за допомогою цієї команди:
grep -Pzo "START(.|\n)*END" filename
І результат запуску вище команди буде такий:
START
First line
second line
third line
END
Потім я використав цю команду для об'єднання всіх рядків в один рядок:
LAST_RESULT | sed -e :a -e '/$/N; s/\n/ /; ta'
Тоді я отримаю такий результат:
START First line second line third line END
І з моєю останньою командою LAST_RESULTS | sed 's/.*/SINGLEWORD/'я змінюю їх "SINGLEWORD"і отримую цей результат.
SINGLEWORD
Тепер, що я хочу, це: як я можу використовувати цю команду (або вашу команду пропозиції) та замінити (на місці) мій блок рядків на слово "SINGLEWORD"? І кінцевим результатом буде такий файл:
My block of line starts from here
SINGLEWORD
and end to here for example.
sedмає бути можливим, але, ймовірно, важче читати (Подивіться на це питання )