sed reemplaza todo para el argumento de la primera aparición y nada para la segunda aparición

sed reemplaza todo para el argumento de la primera aparición y nada para la segunda aparición

Estaba intentando reemplazar 'mysql' con 'MySQL' en el /etc/snort/snort.confarchivo y enviar el resultado a otro archivo. Hay dos apariciones de mysqlen el expediente, como se puede ver en la imagen.

Mientras que el uso sed s/mysql/MySQL/g /etc/snort/snort.conf > test.conffuncionó, reemplazar gcon 1hizo exactamente lo mismo en lugar de simplemente reemplazar la primera aparición. Además, el uso 2no reemplazó nada en lugar de reemplazar la segunda aparición.

Agradecería alguna ayuda para explicar este comportamiento.

EDITAR: Este es mi archivo de texto:https://pastebin.com/X3R9HK6D

ingrese la descripción de la imagen aquí

Respuesta1

La 1bandera significa reemplazar la primera aparición de la cadena encada línea, no en el archivo en su totalidad. Lo mismo ocurre con el 2. La bandera g también significa reemplazar todas las apariciones en cada línea. Simplemente sucede que esto también reemplazará todas las apariciones en el archivo.

$ cat > text.txt
foo foo
foo foo
$ sed s/foo/bar/1 text.txt 
bar foo
bar foo
$ sed s/foo/bar/2 text.txt 
foo bar
foo bar

información relacionada