Содержимое моего 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
должно быть возможным, но, вероятно, труднее для чтения (посмотрите на этот вопрос )