sed中的全局标志是什么



我已经知道全局(/g(标志,它意味着操作应该在文件中全局进行。

如果我想替换"0"的所有实例;你好世界";用";再见空间";,我想在发言的末尾加上/g

这是有道理的。然而

我正在编写一个sed替换命令,注意到即使我不包括/g,它仍然会替换文件中的所有实例。以下是我的.txt文件的内容:

hello there
how is life
today is over
today is over
don't be sad
today is over
tomorrow is a new day

现在,我想把所有这些";今天结束了";行并用";明天就要开始了;。因此,我写了以下代码:

YOUR_FILE='testing.txt'
LINE="today is over"
sed -i "" "s/$LINE/tomorrow will begin/" $YOUR_FILE

尽管末尾没有包含全局标志,但它仍然用tomorrow will begin替换today is over的所有实例。

有人能向我解释一下这种行为吗?因为我找不到任何关于它的信息。为什么即使我在最后省略了/g部分,它也会替换所有实例?

或者,如果我只想删除第一个实例,我该如何指定它?

我在Mac上做这个。

全局标志允许sed替换同一行中的多个匹配项。

$ echo 'world world' > somefile
$ sed 's/world/hello/' somefile
hello world
$ sed 's/world/hello/g' somefile
hello hello

最新更新