Script Bash para comentar y descomentar línea

Script Bash para comentar y descomentar línea

Espero que estés bien durante este tiempo. La cuestión es que me gustaría comentar algunas líneas en mi archivo de texto. Tengo un código para comentar y descomentar varias líneas, sin embargo, no sé cómo obtener el nombre de la empresa. Mi archivo de texto tiene 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$/"

y quiero comentar ITALIA con el nombre Autumn, Ferari-taxi, Delta M, Red_Park. Sé cómo comentar algunos nombres con sed como

sed -i '/Winter\|Spring/s/^/#/' file2.txt

y descomentar

sed -i '/Spring/s/^#//' file2.txt

pero elige todos los nombres a pesar del nombre del país. No sé cómo llegar al país. RENDIMIENTO 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$/"

Estaría encantado de recibir cada consejo. ¡Gracias!

Respuesta1

Debe incluir su país de destino en el ITALYtérmino de búsqueda, agrupar las alternativas (Autumn|Delta....)y permitir los caracteres entre .*los dos términos de búsqueda.

sed -E '/ITALY.*(Autumn|Delta.. M|Red.._Park|Ferari-taxi)/s/^/#/' file1

Eso es con un ligero truco \para evitar las fugas.

sed -E '/ITALY.*(Autumn|Delta\\\\ M|Red\\\\_Park|Ferari-taxi)/s/^/#/' file1

Realice los cambios en el mismo archivo incluyendo el -iindicador in situ parased

sed -i -E .....

EditarPodrías haber publicado esto como otra pregunta, pero...

"...¿es posible encontrar palabras \\sin escribir \\\\sed?..."en otras palabras sinescapandoa ellos.

No. Y la razón esaquí:

El carácter '\', cuando va seguido de ciertos caracteres ordinarios, adquiere un significado especial.

Entonces, en su cadena coincidente, si el carácter después de \es uno de los que forma uno de los pares reservados (por ejemplo \+, \?, \n), ¿cómo puede sedsaber si está buscando el literal \no una nueva línea?

Por lo tanto, cada \contenido que se pretende leer literalmente debe tener un carácter de escape para que se sedsepa sin ambigüedades que no forma parte de ninguna secuencia de caracteres reservada.

información relacionada