Tengo un archivo llamado .ignore
. En necesidad de reemplazar el projdir
. Por ejemplo:
ignore \..*
ignore README
projdir Snake
Necesito reemplazar Snake con, por ejemplo, "PacMan". Leí la página del manual, pero no tengo idea de qué hacer.
Tengo un archivo llamado .ignore
. En necesidad de reemplazar el projdir
. Por ejemplo:
ignore \..*
ignore README
projdir Snake
Necesito reemplazar Snake con, por ejemplo, "PacMan". Leí la página del manual, pero no tengo idea de qué hacer.
Respuestas:
Busque una línea que comience projdir
y reemplace toda la línea por una nueva:
sed -i 's/^projdir .*$/projdir PacMan/' .ignore
^
y $
son marcadores de inicio / fin de línea, por lo que el patrón coincidirá con toda la línea; .*
coincide con cualquier cosa. El -i
le dice sed
a escribir los cambios directamente .ignore
, en lugar de simplemente enviarlos
Un enfoque es reescribir toda la línea, utilizando referencias posteriores para las partes que desea conservar:
sed -e 's/^\( *projdir *\)[^ ]*\(.*\)*$/\1PacMan\2/'
Otro enfoque es reescribir esa parte de la línea, pero solo si alguna otra parte coincide:
sed -e '/^ *projdir / s/ [^# ]/ PacMan/'
Ambos ejemplos reescriben la segunda palabra delimitada por espacios en blanco en las líneas donde está la primera palabra projdir
.
Aunque esta es una publicación antigua y parece que la respuesta aceptada la resuelve, la pregunta real no ha sido respondida. Entonces, para completar y ayudar a otros:
Aquí la respuesta que realmente coincide con "Snake" y no con las líneas que comienzan con "projdir" ...
sed -r 's/(^.*)Snake/\1PacMan' .ignore
Esto reemplaza todo desde el comienzo de la línea, incluyendo "Snake" con todo antes de "Snake" + "PacMan". \ 1 representa lo que coincide dentro (). Todo lo que sigue a "Serpiente" permanece intacto.
sed -i 's:^projdir.*$:projdir PacMan:g' .ignore
^ projdir es encontrar la línea que comienza con string projdir. El. * $ Allí representa la cadena después de projdir en la línea de la misma línea. El string projdir PacMan es el string con el que estamos reemplazando. g es para global: para reemplazar todas esas líneas que comienzan con projdir. .ignore es el nombre del archivo