$sea = xyz-ajay-no-siddhart-ubidone-fdh-DMJK.UK.1.0-32133-Z-1.tgz
我只想提取第一次出现的DMJK.UK.1.0-32133-Z-1,搜索字符串将以DMJK开头。
$sea = anything-anything.xyz-ajay-no-siddhart-ubidone-fdh-DMJK.UK.1.0-32133-Z-1.tgz matchessadds.dsdsds.21212.anything-anything
或 $ sea = anything-anything.xyz-ajay-no-siddhart-ubidone-fdh-DMJK.UK.1.0-32133-Z-1.tar.bz2 matchessadds.dsdsds.21212.anything-anything
需要从DMJK开始,然后才能提取#34; .tgz"或" .tar"或" tar.bz2",
在上述情况下,o / p应为DMJK.UK.1.0-32133-Z-1。
main String可以是包含格式
的任何内容" anything.anything-DMJK.XXX。[] 0-9]。[0-9]。[0-9] -3213309- [AZ] - [0-9] .tar.tgz什么"
飞行中的变化,o / p可能是DMJK.XXX.1.3.0-3213309-Z-13
我试过但它不起作用:
echo $sea | sed 's#.*(DMJK.*).t*#\1#g'
答案 0 :(得分:0)
有更好的方法可以做到这一点,但您可以使用以下方法修复当前的解决方案:
sed -E 's#.*(DMJK.*)\.(tgz|tar.bz2|tar)#\1#g'
(好吧,有点。在.tar.bz5的字符串中,这可能无法正常工作。但是,在这种情况下你想做什么并不完全清楚。)