繁体   English   中英

使用Shell脚本从冗长的字符串中提取子字符串

[英]Extract a substring from a lengthy string Using Shell Script

我正在尝试从很大的字符串中查找/提取子字符串。 这里的问题是子字符串可能会重新出现/重复。 有人可以帮忙吗?

实际字符串:

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/然后我记得\\( \\) [^/]*任何零个或多个字符,直到^/为止。 然后,我将字符串的其余部分与.*匹配。 整个行用get代替记住的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM