Para comentar as linhas 2 a 4 do bla.conf:
sed -i '2,4 s/^/#/' bla.conf
Para fazer o comando que você queria, basta colocar o acima em um script de shell chamado comment:
#!/bin/sh
sed -i "$1"' s/^/#/' "$2"
Esse script é usado da mesma forma que o seu, com a exceção de que a primeira e a última linha devem ser separadas por vírgula e não por hífen. Por exemplo:
comment 2,4 bla.conf
Um comando de não comentário pode ser criado analogamente.
Recurso avançado
sed
A seleção de linhas é bastante poderosa. Além de especificar a primeira e a última linha por número, também é possível especificá-las por uma regex. Portanto, se você deseja comandar todas as linhas da que contém foo
até a que contém bar
, use:
comment '/foo/,/bar/' bla.conf
Sistemas BSD (OSX)
Com o BSD sed, a -i
opção precisa de um argumento, mesmo que seja apenas uma string vazia. Assim, por exemplo, substitua o comando superior acima por:
sed -i '' '2,4 s/^/#/' bla.conf
E, substitua o comando no script por:
sed -i '' "$1"' s/^/#/' "$2"
sed
,perl
etc. Especificamente a A por terdon!