0

bash の正規表現に些細な問題があります。

#!/bin/bash
FNAME=$1
echo ${FNAME//.*\/tests\//}

/test/ も含めて /test/ の前のすべてを削除したい。何らかの理由で「.*」が機能しません。

$ ./eclipse/unittest.sh /foo/tests/bar
/foo/tests/bar

bash reg expで何かを選択するにはどうすればよいですか?

4

1 に答える 1

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
于 2012-09-29T22:26:59.357 に答える