gpt4 book ai didi

sed - 是否可以告诉 sed 每行最多执行一次替换?

转载 作者:行者123 更新时间:2023-12-04 19:49:58 25 4
gpt4 key购买 nike

是否可以使用sed封装如下伪代码?

for line in lines:
if line == "foo":
print "FOO"
else:
print "- " + line

这是我尝试的第一件事:

> echo 'foo
> bar
> baz' | sed -e 's/^foo$/FOO/' -e 's/^/- /'
- FOO
- bar
- baz

这是不正确的,因为两个替换都应用于第一行。

是否可以告诉 sed 每行最多执行一次替换?

最佳答案

您可以通过在其前面加上模式来限制替换影响的行:

sed -e '/^foo$/! s/^/- /' -e '/^foo$/ s//FOO/' infile

更好的选择是使用 t 分支命令,如果先前的替换成功,它将转到下一行:

sed 's/^foo$/FOO/; t; s/^/- /' infile

或者更便携的:

sed -e 's/^foo$/FOO/' -e t -e 's/^/- /' infile

两种情况下的输出:

FOO
- bar
- baz

关于sed - 是否可以告诉 sed 每行最多执行一次替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15284962/

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