Estou escrevendo um script de shell simples que comentará todas as linhas de código que ainda não foram comentadas. Estou tendo problemas para determinar o comando sed condicional correto. O comando sed para adicionar um # a qualquer arquivo funciona, mas agora preciso torná-lo condicional para não acabar com dois ## nas linhas que já foram comentadas.
Tenho tentado diferentes comandos sed, mas sou novo no Bash e não consigo descobrir a sintaxe de aparência enigmática!
sed -i -e "/^#/! 's/^/#/' $file
A primeira parte do comando sed está errada. Estou recebendo um erro e, sem a primeira parte do comando sed, todas as linhas do arquivo terão um # adicionado, mesmo se já houver um nessa linha. Qualquer ajuda seria muito apreciada!
Obrigado!
Não consegui encontrar as respostas anteriores para fechar isso como uma cópia e ninguém mais fez isso ainda, então vamos lá:
$ cat file
foo
#bar
POSIX:
$ sed 's/^/#/; s/^##/#/' file
#foo
#bar
$ sed 's/^#\{0,1\}/#/' file
#foo
#bar
$ sed 's/^\([^#]\|$\)/#\1/' file
#foo
#bar
GNU:
$ sed 's/^#\?/#/' file
#foo
#bar
Existem inúmeras outras alternativas ...
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras