Чтобы прокомментировать строки со 2 по 4 из bla.conf:
sed -i '2,4 s/^/#/' bla.conf
Чтобы создать команду, которую вы хотели, просто поместите вышеупомянутое в сценарий оболочки с именем comment:
#!/bin/sh
sed -i "$1"' s/^/#/' "$2"
Этот скрипт используется так же, как ваш, за исключением того, что первая и последняя строки должны быть разделены запятой, а не тире. Например:
comment 2,4 bla.conf
Команда раскомментирования может быть создана аналогично.
Расширенная функция
sed
Выбор линии довольно мощный. Помимо указания первой и последней строк по номеру, их также можно указать с помощью регулярного выражения. Итак, если вы хотите командовать всеми строками от той, которая содержит foo
до той, которая содержит bar
, используйте:
comment '/foo/,/bar/' bla.conf
Системы BSD (OSX)
При использовании BSD sed для -i
параметра требуется аргумент, даже если это просто пустая строка. Таким образом, например, замените верхнюю команду выше:
sed -i '' '2,4 s/^/#/' bla.conf
И замените команду в скрипте на:
sed -i '' "$1"' s/^/#/' "$2"
sed
,perl
и т.д. В частности, А по terdon!