![Script Bash para comentar e descomentar a linha](https://rvso.com/image/170299/Script%20Bash%20para%20comentar%20e%20descomentar%20a%20linha.png)
espero que você esteja bem durante esse período. Acontece que gostaria de comentar algumas linhas do meu arquivo txt. Tenho um código para comentar e descomentar várias linhas, porém não sei como obter o nome da empresa. Meu arquivo de texto tem este esquema:lunar_static KKK_<countryname>_NUM 08.00.name
lunar_static KKK_USA_NUM 08.00.Winter
lunar_static KKK_ITALY_NUM 08.Winter
lunar_static KKK_ITALY_NUM 08.00.Spring
lunar_static KKK_ITALY_NUM 08.00.Autumn
lunar_static KKK_SPAIN_NUM 08.00.Winter
lunar_static KKK_SPAIN_NUM 08.00.Spring
lunar_static KKK_FRANCE_NUM 08.00.Autumn
lunar_static KKK_FRANCE_NUM 08.00.Autumn
lunar_static KKK_ITALY_NUM 08.00.Ferari-taxi
lunar_static KKK_ITALY_NUM "/^08\\.00\\.Delta\\ M$/"
lunar_static KKK_ROMANIA_NUM "/^08\\.00\\.Delta\\ M$/"
lunar_static KKK_ITALY_NUM "/^08\\.00\\.Red\\_Park$/"
e quero comentar ITÁLIA com o nome Autumn, Ferari-taxi, Delta M, Red_Park. Eu sei como comentar alguns nomes com sed like
sed -i '/Winter\|Spring/s/^/#/' file2.txt
e descomente
sed -i '/Spring/s/^#//' file2.txt
mas escolhe todos os nomes, independentemente do nome do país. Não sei como chegar ao país. RESULTADO ESPERADO
lunar_static KKK_USA_NUM 08.00.Winter
lunar_static KKK_ITALY_NUM 08.Winter
lunar_static KKK_ITALY_NUM 08.00.Spring
#lunar_static KKK_ITALY_NUM 08.00.Autumn
lunar_static KKK_SPAIN_NUM 08.00.Winter
lunar_static KKK_SPAIN_NUM 08.00.Spring
lunar_static KKK_FRANCE_NUM 08.00.Autumn
lunar_static KKK_FRANCE_NUM 08.00.Autumn
#lunar_static KKK_ITALY_NUM 08.00.Ferari-taxi
#lunar_static KKK_ITALY_NUM "/^08\\.00\\.Delta\\ M$/"
lunar_static KKK_ROMANIA_NUM "/^08\\.00\\.Delta\\ M$/"
#lunar_static KKK_ITALY_NUM "/^08\\.00\\.Red\\_Park$/"
Eu ficaria feliz por todos os conselhos. Obrigado!
Responder1
Você precisa incluir seu país de destino no ITALY
termo de pesquisa, agrupar as alternativas (Autumn|Delta....)
e permitir os caracteres entre .*
os dois termos de pesquisa
sed -E '/ITALY.*(Autumn|Delta.. M|Red.._Park|Ferari-taxi)/s/^/#/' file1
Isso é com uma pequena trapaça \
para evitar as fugas
sed -E '/ITALY.*(Autumn|Delta\\\\ M|Red\\\\_Park|Ferari-taxi)/s/^/#/' file1
Faça as alterações no mesmo arquivo incluindo o -i
sinalizador in place parased
sed -i -E .....
EditarVocê poderia ter postado isso como outra pergunta, mas ...
"...é possível encontrar palavras \\
sem digitar \\\\
sed ?..."em outras palavras, semescapandoeles.
Não. E a razão pela qual éaqui:
O caractere '\', quando seguido por certos caracteres comuns, assume um significado especial
Portanto, na sua string correspondente, se o caractere após the \
for aquele que forma um dos pares reservados (por exemplo \+
, , \?
, \n
), como sed
saber se você está procurando o literal \n
ou uma nova linha?
Portanto, cada um \
que se destina a ser lido literalmente deve ser escapado para que se sed
saiba inequivocamente que não faz parte de nenhuma sequência de caracteres reservada.