1

Я хотел бы удалить шаблон строки, как это

You should not remove this /*This is the part should remove*/ You
should not remove this

Я хотел бы удалить весь текст внутри /* и */ .

2 ответа2

2

В интересах учить человека ловить рыбу и давать человеку ловлю рыбу, я связываю вас с руководством по регулярным выражениям. regular-expressions.info/quickstart.html

Если вам нужно быстрое решение, вот что вы должны сделать: Откройте файл в vim и введите следующее:

:s/\/\*.*?\*\/ /g

Предполагается, что это заменит все ваши строки, начинающиеся / * и заканчивающиеся * / пробелом. Сначала я связал вас с руководством по регулярным выражениям на случай, если я зарежу написанное мной выражение. Либо прочитайте учебник и напишите свою собственную команду, либо сделайте резервную копию, прежде чем использовать строку выше.

0

Попробуйте следующую быструю и грязную строку sed:

sed -e 's@/\*.*\*/@@' file

Это покажет вам вывод, но на самом деле не изменит файл, как только вы запустите его и подтвердите, что он вносит необходимые изменения, затем поставьте -i перед -e чтобы сообщить ему об изменении файла на месте.

Что бы он на самом деле ни делал, он берет все между /* и */ и заменяет его ничем (по сути, удаляя его), он также получает часть /* и */ .

Сначала я даю вам метод немодификации на тот случай, если я убил свое регулярное выражение (работа с памятью и отсутствие доступа к sed на текущей машине для быстрого тестирования). Также имейте в виду, что это не сработает, если в тексте будут удалены поперечные линии, так как sed работает на каждой строке в отдельности. Если вам нужна программа для работы с несколькими строками текста одновременно, вам понадобится либо awk, либо, возможно, perl (ни того, ни другого я не знаю, чтобы предложить варианты кода).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .