
Estaba intentando reemplazar 'mysql' con 'MySQL' en el /etc/snort/snort.conf
archivo y enviar el resultado a otro archivo. Hay dos apariciones de mysql
en el expediente, como se puede ver en la imagen.
Mientras que el uso sed s/mysql/MySQL/g /etc/snort/snort.conf > test.conf
funcionó, reemplazar g
con 1
hizo exactamente lo mismo en lugar de simplemente reemplazar la primera aparición. Además, el uso 2
no 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
Respuesta1
La 1
bandera 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