2008-10-06 10 views
3

У меня есть куча java-файлов, из которых я хочу удалить строки javadoc с лицензией [меняю ее на свой код].Удаление многострочного текста из нескольких файлов

Узор Я ищу это

^\* \* ProjectName .* USA\.$

но соответствует по линии

Есть ли способ СЭД [или обычно используемый редактор в Windows/Linux] может сделать поиска/замены для многострочного рисунка?

ответ

0

Да. Вы используете sed, awk, perl или что-то еще, чтобы решить эту проблему?

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

Вот пример:

/\*(?:.|[\r\n])*?\*/ 
perl -0777ne 'print m!/\*(?:.|[\r\n])*?\*/!g;' <file> 

печатает все комментарии запустить вместе. (?: Нотация должна быть использоваться для не захватывая скобкой/ не должны быть экранированы, потому что разграничивает выражение -0777 используется для включения режима чавкать и -n позволяет автоматическое считывание

.!..

(от: http://ostermiller.org/findcomment.html)

0

Вероятно, кто-то до сих пор ищет такого решения, время от времени Вот один

Использование AWK, чтобы найти строки, которые будут удалены Затем с помощью дифференциала, чтобы удалить строки... и пусть sed очистит.

awk "/^\* \* ProjectName /,/ USA\.$/" input.txt \ 
    | diff - input.txt \ 
    | sed -n -e"s/^> //p" \ 
    >output.txt 

Предупреждение Примечание: если первая модель существует, а второй нет, вы потеряете весь текст ниже первого рисунка - так что проверить, что первый.

+0

Это выглядит потрясающе! .. кроме того, что 'diff' немой! Если у вас есть шаблоны, такие как SSH2 Keys в файле, и вы пытаетесь их удалить, не используйте это. Это займет одну строку от верхней части файла, а затем остальную часть из другого места. – TommyTheKid

 Смежные вопросы

  • Нет связанных вопросов^_^