我在bash中使用正则表达式有一个小问题。
#!/bin/bash
FNAME=$1
echo ${FNAME//.*\/tests\//}
我想删除/ test /包括/ test /之前的所有内容。由于某些原因“。*”不起作用。
$ ./eclipse/unittest.sh /foo/tests/bar
/foo/tests/bar
如何在bash reg exp中选择任何内容?
答案 0 :(得分:3)
您可以使用#
后跟一个模式删除所有内容,包括模式。它将使用最短的匹配:
function f {
echo ${1#*/tests/}
}
$ f /foo/tests/bar
bar
$ f /foo/tests/bar/tests/last
bar/tests/last
如果您想使用最长匹配,可以使用##
:
function f {
echo ${1##*/tests/}
}
$ f /foo/tests/bar
bar
$ f /foo/tests/bar/tests/last
last