给出由单个空格分隔的路径列表:
/home/me/src/test /home/me/src/vendor/a /home/me/src/vendor/b
我想删除前缀/home/me/src/
,以便结果为:
test vendor/a vendor/b
对于我会做的单一路径:${PATH#/home/me/src/}
但是如何将其应用于此系列?
答案 0 :(得分:4)
您可以使用except:
sys.exit(0)
替换所有出现的子字符串。将其替换为空字符串以将其删除。
//
答案 1 :(得分:2)
使用shell parameter expansion 似乎不是解决此问题的方法,因为它会删除某个特定点以外的所有内容非常有用,正如nu11p01n73R's answer所揭示的那样。
为清楚起见,我会使用sed
语法sed 's#pattern#replacement#g'
:
$ str="/home/me/src/test /home/me/src/vendor/a /home/me/src/vendor/b"
$ sed 's#/home/me/src/##g' <<< "$str"
test vendor/a vendor/b
答案 2 :(得分:0)
总是像我这边的一个grep解决方案:
echo 'your string' | grep -Po '^/([^ /]*/)+\K.+'
请注意,上述正则表达式适用于/x/y/z/test ..
之类的任何字符串。但是,如果您只对替换/home/me/src/
感兴趣,请尝试以下操作:
echo 'your string' | grep -Po '^/home/me/src/\K.+' --color