
Я пытался заменить '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