Adicione um # como o primeiro caractere de linhas no arquivo que ainda não comecem com '#'

Jackgilbertx

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!

Ed Morton

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.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Adicione um # como o primeiro caractere de linhas no arquivo que ainda não comecem com '#'

como mesclar linhas que não comecem com determinado caractere

Como ler com eficiência o primeiro caractere de cada linha de um arquivo de texto?

Bash: Como verificar se o primeiro caractere de um arquivo é {

Como posso filtrar linhas onde o primeiro caractere de uma coluna está em um intervalo com EF e SQL Server?

Descobrir o caractere 'a' de um arquivo e contar as linhas em que o caractere apareceu

No Windows 10, como faço para renomear um arquivo para um nome de arquivo que inclui um caractere com trema?

Como deletar o último caractere de um arquivo com C #

Python 3: unir linhas de arquivo se não terminar com um caractere especial

Como remover um caractere de cada string de uma lista, com base na posição em que um caractere específico ocorre no primeiro membro dessa lista?

Classificando o conteúdo do arquivo de acordo com um campo diferente do primeiro caractere

Por que RandomAccessFile lê ï »¿como o primeiro caractere em meu arquivo de texto UTF-8?

Qual deve ser o primeiro caractere de um arquivo XML?

Como faço para lidar com um nome de arquivo que começa com o caractere hífen (-)?

Como faço para lidar com um nome de arquivo que começa com o caractere hífen (-)?

substitui colunas específicas em linhas que não começam com um caractere específico em um arquivo de texto

Como obter o primeiro caractere que está fazendo com que a expressão reg não corresponda

Como fazer um caractere invisível em HTML, que ainda é pego na seleção de texto?

Corresponde às quebras de linha em linhas que não começam com um caractere especial

Como deletar linhas de um arquivo até um caractere específico? [Pitão]

Como faço para unir várias linhas de um arquivo onde o último caractere é '\'

macOS - Como fazer com que o NSSavePanel adicione uma extensão de arquivo no nome do arquivo?

Adicione texto em certas linhas de um arquivo, com o texto adicionado dependendo da saída de um comando que pega uma substring da linha

Como remover o primeiro caractere de um link em Javascript

Como obter o primeiro caractere de todos os valores de um array numpy (em forma (n, m)) preenchido com strings

O que é Regex para nome de usuário com o primeiro caractere como alfabeto e tem um intervalo específico em Java?

Por que a E / S de arquivo do C ++ está ignorando as linhas vazias iniciais ao ler um arquivo de texto? Como posso fazer com que NÃO faça isso?

Como escrever um caractere Unicode em um arquivo que não é compatível com utf-8, python

Como sub-primeiro caractere em um arquivo de texto com regex em Python

TOP lista

quentelabel

Arquivo