说我有路径
a/b/c/d/e/f
a/b/c/d
我如何获得以下内容?
e/f
答案 0 :(得分:13)
您可以使用以下方法从另一个中删除一个字符串:
echo "${string1#"$string2"}"
请参阅:
$ string1="a/b/c/d/e/f"
$ string2="a/b/c/d"
$ echo "${string1#"$string2"}"
/e/f
来自man bash
- > Shell parameter expansion:
$ {参数#字}
$ {参数##字}
这个词被扩展为产生一个模式,就像文件名一样 扩张。如果模式与扩展值的开头匹配 参数,然后扩展的结果是扩展值 具有最短匹配模式的参数('#'情况)或 最长匹配模式('##'案例)已删除。
有空格:
$ string1="hello/i am here/foo/bar"
$ string2="hello/i am here/foo"
$ echo "${string1#"$string2"}"
/bar
要“清理”多个斜杠,您可以关注Roberto Reale's suggestion并使用readlink -m
规范化路径,以便与具有相同实际路径的字符串进行比较:
$ string1="/a///b/c//d/e/f/"
$ readlink -m $string1
/a/b/c/d/e/f