gpt4 book ai didi

Bash sed 非贪婪匹配

转载 作者:行者123 更新时间:2023-12-02 15:50:52 24 4
gpt4 key购买 nike

这是我的文字:

1a.begin /path/1a.file
2bx.begin2 /path/my/2bx.file2

预期的输出是

begin /path/1a.file
begin2 /path/my/2bx.file2

在这里,我想通过使用 sed 的非贪婪匹配来实现。 (sed默认匹配是贪心的,1a.和2bx.都会被去掉)

因此我尝试了命令:

echo -e "1a.begin /path/1a.file\n2bx.begin2 /path/my/2bx.file2"|sed 's/$.*[^\.]\.//g'

我在其中使用 $.* 来匹配从行首开始的所有字符串。我使用 [^\.] 来防止一行中的所有 . 贪婪匹配(参见 https://www.unix.com/shell-programming-and-scripting/133641-non-greedy-sed.html 中的类似方法)但它并没有改变文本。

那么我的脚本哪里错了?

最佳答案

  • 您的行 anchor $ 错误,您应该使用 ^
  • 您使用贪婪匹配 .* 直到最后一个周期 .

使用sed

$ sed 's/^[^.]*\.//' input_file
begin /path/1a.file
begin2 /path/my/2bx.file2

关于Bash sed 非贪婪匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72536179/

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