Если вы хотите, чтобы удалить все строки, которые только комментарии и комментарии создаются с ведущим символом #, тогда все, что вам нужно сделать, это:
perl -i -ne 'print unless (m/^\s*#/);' file_name
m соответствует нам эс^(начало строки) \ S * (ноль или более пробелов)
Если с другой стороны, вы хотите, чтобы удалить эту конкретную строку, а затем использовать -n вместо -p так:
perl -i -ne 'print unless (m//## Some text #/);' file_name
Причина, по которой ваш код не работает, заключается в том, что параметр -p всегда будет давать вам печать. Тип:
perldoc perlrequick
и
perldoc perlretut
для получения дополнительной информации по рег. выражения. Тип:
для получения дополнительной информации о вариантах -n и -p.
's/## Some text \ s ##/g' – kchoose2
Это недействительный' s /// ', потому что нет никакой замены. Кроме того, '\ s' - это только один символ пробела. Вам нужно будет сделать 's/## Some text \ s * ## // g'. –
@ AndyLester - Спасибо за исправление. – kchoose2