我正在尝试从一个非常大的字符串中查找/提取子字符串。这里的问题是子字符串可能会重新出现/重复。有人可以帮忙吗?
实际字符串:
Shell/Retrieve/force-app-temporary/main/default/classes/Account.cls-meta.xml
and
Shell/Retrieve/force-app/main/default/classes/Account.cls-meta.xml
differ Files
Shell/Retrieve/force-app-temporary/main/default/pages/Contact.cls-meta.xml
and
Shell/Retrieve/force-app/main/default/pages/Contact.cls-meta.xml
differ Files
Shell/Retrieve/force-app-temporary/main/default/Layout/Lead.cls-meta.xml
and Shell/Retrieve/force-app/main/default/Layout/Lead.cls-meta.xml
differ Files...
预期的子字符串:
查找在"default/"之后开始并以立即"/"结尾的子字符串。 例如,在上面的字符串中,它应该返回如下
classes
classes
pages
pages
Layout
Layout
我在下面尝试过,但它不起作用。
Substrings=$(sed -n "s/.* default/(.*)/.com.*/\1/p" <<< $Actual_String)
差不多就是这样:
sed -n 's@.*/default/([^/]*).*@1@p'
您可以在sed
s
命令中使用任何字符。我在这里使用@
,s@EXP@REP@
,这样/
就不会混合。
我匹配.*
然后/default/
然后我记得(
)
[^/]*
任何零个或多个字符,直到^/
斜杠。然后我将字符串的其余部分与.*
匹配。整行被记住的东西所取代。