给出由单个空格分隔的路径列表:
/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/},但是如何将它应用于本系列?
发布于 2016-06-08 08:49:10
可以使用//替换所有出现的子字符串。用空字符串替换它以删除它们。
$ path="/home/me/src/test /home/me/src/vendor/a /home/me/src/vendor/b"
$ echo ${path//\/home\/me\/src\/}
test vendor/a vendor/b参考资料:${参数/模式/字符串}在Bash参考手册中
发布于 2016-06-08 09:02:02
就像我身边的grep解决方案一样:
echo 'your string' | grep -Po '^/([^ /]*/)+\K.+'请注意,上面的正则表达式对任何字符串(如/x/y/z/test .. )都这样做。但是,如果您只对替换/home/me/src/感兴趣,请尝试以下方法:
echo 'your string' | grep -Po '^/home/me/src/\K.+' --color https://stackoverflow.com/questions/37697512
复制相似问题