gpt4 book ai didi

regex - 如何修复以下 sed 命令?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:16 25 4
gpt4 key购买 nike

我正在尝试将 _out 附加到与以下 sed 命令中显示的正则表达式匹配的任何内容。 _out 应该在 [ (] 之前。

sed -n '/[^_]lm[01?]_.*[ (]/p'

该命令如我所料正确返回行。现在,当我尝试使用以下命令定义要在替换中使用的区域时,问题就来了。

例如,如果我有 lm?_whatever( 的匹配项,它应该替换为 lm?_whatever_out(

我用过

sed 's/\([^_]lm[01?]_.*\)\([ (]\)/\1_out\2/g' text_to_edit

你可能猜到我运气不好。我做错了什么?

编辑:

下面是一个解释更多的例子:

正文:

this will make absolutely no sense=lm?_hello <= four_lm1_hi(5:0) bla bla
lm1_blabbering(5:0)

应该变成

this will make absolutely no sense=lm?_hello_out <= four_lm1_hi(5:0) bla bla
lm1_blabbering_out(5:0)

最佳答案

为了只匹配你的lm字而不影响后面的字,你需要限制模式。我建议将 .* 转换为 [^[:blank:]]* 以匹配 0 个或更多除空格或制表符以外的字符:

sed 's/\([^_]lm[01?]_[^[:blank:]]*\)\([ (]\)/\1_out\2/g' text_to_edit

(EDIT) 或者,如果 _ 之间的唯一字符是字母数字字符,您可以使用 [[ :alnum:]] 字符类:

sed 's/\([^_]lm[01?]_[[:alnum:]_]*\)\(.\)/\1_out\2/g' text_to_edit

这样,我们将确保只有 lm?_hellolm1_blabbering 匹配。

关于regex - 如何修复以下 sed 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30599974/

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