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 ITALY
té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 -i
indicador 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 sed
saber si está buscando el literal \n
o una nueva línea?
Por lo tanto, cada \
contenido que se pretende leer literalmente debe tener un carácter de escape para que se sed
sepa sin ambigüedades que no forma parte de ninguna secuencia de caracteres reservada.