Используйте GREP для замены тела текста

От чего лучший способ состоит в том, чтобы использовать GREP для замены текста in через </div> с walked down the path

The cat in the hat
jdlsknklnvlsdknld       ======>    The cat walked down the path
jkgsabkjkjksjakh
</div>
0
задан 27 January 2018 в 21:44

2 ответа

Соответствие нескольким строкам может быть довольно легко сделано с помощью Perl.

perl -p0e 's# in .*</div># walked down the path.#sm'

Кратко помещенный,

  • -p0e превратите Perl в a sed- как потоковая передача многострочного процессора.
  • s#...#...# часть показывает, что Вы хотите заменить все символы от in кому: </div> (первый пункт) с walked down the path (второй пункт).
  • sm примерно означает "символы новой строки обработки как все другие символы.

Этот ответ предполагает, что входной текст имеет только один такой шаблон.

Страницы соответствующей документации могут быть найдены здесь и здесь на официальном сайте Perl.

3
ответ дан 31 October 2019 в 03:08

Использовать grep заменять текст? Удача с этим.

sed сделает это для Вас:

sed 's/in the hat/walked down the path/;/The cat/,/<\/div>/ {/The cat/n;d}' file

Примечания

  • s/old/new/ замена old с new
  • ; разделяет команды
  • /begin/,/end/ действуйте в диапазоне от строки с /begin/ к строке с /end/
  • {} группировка, чтобы команды использовали на диапазоне
  • /The cat/n исключите строку с /The cat/ (ничего не сделайте и считайте следующую строку),
  • d удалите (остальная часть строк в диапазоне)
2
ответ дан 31 October 2019 в 03:08

Другие вопросы по тегам:

Похожие вопросы: