sed 替换第一次出现的参数的所有内容,而不替换第二次出现的参数

sed 替换第一次出现的参数的所有内容,而不替换第二次出现的参数

我尝试将/etc/snort/snort.conf文件中的“mysql”替换为“MySQL”,并将结果输出到另一个文件。文件中出现了两次mysql,如图所示。

虽然 usingsed s/mysql/MySQL/g /etc/snort/snort.conf > test.conf确实有效,但替换gwith 的1效果完全相同,而不仅仅是替换第一次出现的情况。此外,using2什么也没有替换,而是替换了第二次出现的情况。

我很高兴能得到一些帮助来解释这种行为。

编辑:这是我的文本文件: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

相关内容