sed заменяет все для аргумента первого вхождения и ничего для второго вхождения

sed заменяет все для аргумента первого вхождения и ничего для второго вхождения

Я пытался заменить 'mysql' на 'MySQL' в /etc/snort/snort.confфайле и вывести результат в другой файл. В файле есть два вхождения mysql, как видно на рисунке.

В то время как использование sed s/mysql/MySQL/g /etc/snort/snort.conf > test.confработало, замена gна 1сделала то же самое, вместо того, чтобы просто заменить первое вхождение. Более того, использование 2ничего не заменило, вместо того, чтобы заменить второе вхождение.

Я был бы признателен за помощь в объяснении такого поведения.

EDIT: Это мой текстовый файл:https://pastebin.com/X3R9HK6D

введите описание изображения здесь

решение1

Флаг 1означает замену первого вхождения строки накаждая строка, а не в файле в целом. Аналогично для 2. Флаг g также означает замену всех вхождений в каждой строке. Просто так получилось, что это также заменит все вхождения в файле.

$ 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

Связанный контент