如何使用 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
分隔符以避免必须对其进行转义;我在上面使用了#
。
我正在尝试 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
分隔符以避免必须对其进行转义;我在上面使用了#
。