Script Bash para comentar e descomentar a linha

Script Bash para comentar e descomentar a linha

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 ITALYtermo 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 -isinalizador 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 sedsaber se você está procurando o literal \nou uma nova linha?

Portanto, cada um \que se destina a ser lido literalmente deve ser escapado para que se sedsaiba inequivocamente que não faz parte de nenhuma sequência de caracteres reservada.

informação relacionada