如何使用 sed 使用字符串作为搜索参数来提取字符串

How to use sed to extract a string using a string as search parameter

我正在尝试 return 一个通过输出不断变化的字符串。 我认为 grep 和 sed 可能是处理这个问题的最佳方式。 基本上,输出会呈现一大段文本,其中包含一些效果

https://rancher.website.com/version1/proj/abcd123?somethingsomethingsomethingetc

目标是 return

的第一个实例
https://rancher.website.com/version1/proj/

因为有多个,然后returnabcd123的内容直到它前面的?符号。

我一直在尝试调整 sed 命令,但 运行ning 我的语法一直在犯错误,我无法理解到目前为止给出的解释。我认为我的问题之一可能是 sed “搜索”由于缺少更好的术语而正在 运行 针对字符串而不是单个字符这一事实。正斜杠也是一个问题,因为我认为它们在 sed 命令中被解释为运算符?

我尝试使用的命令大致是:

grep 'https://rancher.website.com/version1/projects/' grep.txt | sed 's/^.*'https:\/\/rancher.website.com\/version1\/projects\/'//g'

grep.txt 是初始命令输出文本的容器

用空字符串替换直到最后一个 / 和从 ? 开始的所有内容。

grep -m 1 'https://rancher.website.com/version1/projects/' grep.txt | 
    sed -e 's#.*/##' -e 's#\?.*##'

当模式包含 / 时,使用不同的字符作为 s 分隔符以避免必须对其进行转义;我在上面使用了#