
ファイル内の 'mysql' を 'MySQL' に置き換えて、結果を別のファイルに出力しようとしました。画像に示すように、ファイル内に/etc/snort/snort.conf
が 2 回出現します。mysql
を使用するとsed s/mysql/MySQL/g /etc/snort/snort.conf > test.conf
機能しましたが、 をg
に置き換える1
と、最初の出現箇所が置き換えられるのではなく、まったく同じことが行われました。さらに、 を使用すると、2
2 番目の出現箇所が置き換えられるのではなく、何も置き換えられませんでした。
この動作を説明するのに助けていただければ幸いです。
編集: これは私のテキスト ファイルです: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