Есть ли способ комментировать / раскомментировать сценарий shell / config / ruby с помощью командной строки?
например:
$ comment 14-18 bla.conf
$ uncomment 14-18 bla.conf
это добавит или удалит #
знак bla.conf
на линии 14
к 18
. Обычно я использую sed
, но я должен знать содержимое этих строк, а затем выполнить операцию поиска и замены, и это даст неверный результат, если имеется более одной иглы (и мы хотим заменить только N-ю один).
shell-script
text-processing
Kokizzu
источник
источник
sed
,perl
и т.д. В частности, А по terdon!Ответы:
Чтобы прокомментировать строки со 2 по 4 из bla.conf:
Чтобы создать команду, которую вы хотели, просто поместите вышеупомянутое в сценарий оболочки с именем comment:
Этот скрипт используется так же, как ваш, за исключением того, что первая и последняя строки должны быть разделены запятой, а не тире. Например:
Команда раскомментирования может быть создана аналогично.
Расширенная функция
sed
Выбор линии довольно мощный. Помимо указания первой и последней строк по номеру, их также можно указать с помощью регулярного выражения. Итак, если вы хотите командовать всеми строками от той, которая содержитfoo
до той, которая содержитbar
, используйте:Системы BSD (OSX)
При использовании BSD sed для
-i
параметра требуется аргумент, даже если это просто пустая строка. Таким образом, например, замените верхнюю команду выше:И замените команду в скрипте на:
источник
'
после-i
опции преднамеренными? Они не нужны.С GNU sed (для замены файлов на месте с
-i
опцией):источник
Вы можете использовать Vim в режиме Ex:
g
глобальное регулярное выражениеs
заменаx
сохранить и закрытьисточник
Вы можете создать bash_file с функциями, чтобы использовать его в своих проектах
источник