如何在shell中的特定字符后剪切字符串?

时间:2020-10-23 10:43:05

标签: shell

我有这个字符串

localhost:32121 / root / docker_registry / aiindevops.azurecr.io / msbuild:0.1

我想从上方提取此“ aiindevops.azurecr.io/msbuild:0.1”值。

1 个答案:

答案 0 :(得分:1)

您没有指定字符串的哪一部分是确切的重复模式。 我将假设localhost:32121/root/docker_registry/永远不会改变。

然后,实现此目标的众多方法之一是用sed进行简单的正则表达式替换(注意:为了便于阅读,我使用了|而不是通常的/来避免转义) URL中的/

$ echo "localhost:32121/root/docker_registry/aiindevops.azurecr.io/msbuild:0.1" | sed -Ee 's|localhost:32121/root/docker_registry/(.+)|\1|'

aiindevops.azurecr.io/msbuild:0.1

另一种使用cut,其中/作为字段分隔符,并从字段4输出到末尾:

$ echo "localhost:32121/root/docker_registry/aiindevops.azurecr.io/msbuild:0.1" | cut -d '/' -f4-

aiindevops.azurecr.io/msbuild:0.1
相关问题