Existe uma maneira de comentar / descomentar um script shell / config / ruby usando a linha de comando?
por exemplo:
$ comment 14-18 bla.conf
$ uncomment 14-18 bla.conf
isso adicionaria ou removeria o #
login on bla.conf
-line14
em 18
. Normalmente eu uso sed
, mas devo conhecer o conteúdo dessas linhas e, em seguida, executar uma operação de localizar e substituir, e isso daria um resultado errado quando houver mais de uma agulha (e só queremos substituir a N-ésima 1).
shell-script
text-processing
Kokizzu
fonte
fonte
sed
,perl
etc. Especificamente a A por terdon!Respostas:
Para comentar as linhas 2 a 4 do bla.conf:
Para fazer o comando que você queria, basta colocar o acima em um script de shell chamado comment:
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:
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émfoo
até a que contémbar
, use: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:E, substitua o comando no script por:
fonte
'
após a-i
opção é intencional? Não precisava deles.Com o GNU sed (para substituir os arquivos no lugar pela
-i
opção):fonte
Você pode usar o Vim no modo Ex:
g
regex globals
substitutox
salvar e fecharfonte
Você pode criar um arquivo bash_file com funções para reutilizá-lo em seus projetos
fonte