gpt4 book ai didi

macos - sed: c 命令,只改变第一行,文本被删除

转载 作者:行者123 更新时间:2023-11-29 09:40:32 26 4
gpt4 key购买 nike

我在编写 shell 脚本的第二天就遇到了这个问题:我想更改一整行代码,我只用一个词来标识它,而且我只想这样做第一次出现。

我正在使用 sed 和 c 命令,看起来像这样:

名为“prova”的文件中的文本:

Apple is red
Apple is green
Banana
Tangerine

sed 一段代码:

sed -i.bak '1,/Apple/c\
Apricot
' prova

(我使用的是 Mac OSX)

奇怪的是,与 these guys 报道的一致,如果这样做,我会得到 prova 文件的输出:

Apricot
Banana
Tangerine

一个“苹果”没了!有没有解决的办法?请耐心等待,我是初学者...

提前致谢!

最佳答案

尝试

sed '1cApricot' prova

使用 1,/Apple/,您可以定义一个范围,从第 1 行开始到第一个 Apple after 行结束1. 你想要的不是一个范围,只是一行。这可以通过仅使用 1(而不是例如 1,2)来实现。

上面的命令对我有用,但它取决于 版本,不行的话试试

sed '1c\
Apricot' prova

1 你告诉 更改第一行。

如果您不一定要更改第 1 行,但第一次出现 Apple,您可以这样做

sed '0,/Apple/s/.*Apple.*/Apricot/'

我在这里使用了替换命令s(坦白说,我从来没有使用过c),它只适用于从第0行开始的范围到 Apple 的第一次出现。如果找到 Apple,则整行替换为 Apricot

关于macos - sed: c 命令,只改变第一行,文本被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22201056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com