gpt4 book ai didi

regex - 在 bash 中使用从行的中间或末尾提取单词

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

我知道那里有成百上千个类似的帖子,我已经尝试了很多东西,但还是无法得到它。我想从以 -D 开头的字符串中提取一个单词。示例:

This is foo -Dbar,barOne the end

应该打印

-Dbar,barOne

这是我的:

sed -n 's/.*\-D\(.*[\s\|$]\)/\1/p'

这不是唯一的正则表达式,我已经尝试了很多变体,但一个或另一个不起作用。例如,如果 -D 是最后一个词但没有工作,我能够得到输出,它在中间,一旦它工作,如果它在中间,如果它没有在最后。我在这里做错了什么?

最佳答案

使用纯 BASH:

s='This is foo -Dbar,barOne the end'
[[ "$s" =~ (-d[^[:space:]]+) ]]; echo "${BASH_REMATCH[1]}"
-Dbar,barOne

说明:

  • -d 匹配文字 -d
  • [^[:space:] - 匹配除空格以外的任何内容
  • [^[:space:]]+ 匹配1个或多个非空格(相当于\S+)
  • (-d[^[:space:]]+) 捕获组 #1 中的整个匹配
  • &&只有上一个命令成功才执行下一个命令
  • echo "${BASH_REMATCH[1]}" 打印捕获组#1

关于regex - 在 bash 中使用从行的中间或末尾提取单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27534122/

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