Вміст мого 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
має бути можливим, але, ймовірно, важче читати (Подивіться на це питання )