Как удалить шаблон строки с помощью терминала Linux?

Как удалить шаблон строки с помощью терминала Linux?

Я хотел бы удалить узор строки, который похож на этот

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

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

решение1

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

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

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

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

решение2

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

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

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

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

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

Связанный контент