如何使用 sed 更改文件中某个单词的第三次出现?

如何使用 sed 更改文件中某个单词的第三次出现?

text.txt我需要使用该命令更改文件中第 3 次出现的“None” sed。我找到了这个命令

sed 's/None/All/3' text.txt

但这适用于一行中第 3 次出现的“None”,而不是整个文档中出现的“None”。有没有办法使用 sed 在整个文档中查找“None”并仅更改第 3 次出现的“None”?

我可以使用行号,但如果我的文档发生变化,则命令将不起作用。

答案1

-z鉴于 GNU sed,你可以通过添加(或--null-data) 选项来伪造它:

-z, --null-data
             separate lines by NUL characters

假设您的文档实际上不包含空分隔数据,这将导致 sed 将整个文档视为一行,以便修饰符3假定您想要的含义

sed -z 's/None/All/3' text.txt

相关内容