bash の正規表現に些細な問題があります。
#!/bin/bash
FNAME=$1
echo ${FNAME//.*\/tests\//}
/test/ も含めて /test/ の前のすべてを削除したい。何らかの理由で「.*」が機能しません。
$ ./eclipse/unittest.sh /foo/tests/bar
/foo/tests/bar
bash reg expで何かを選択するにはどうすればよいですか?
bash の正規表現に些細な問題があります。
#!/bin/bash
FNAME=$1
echo ${FNAME//.*\/tests\//}
/test/ も含めて /test/ の前のすべてを削除したい。何らかの理由で「.*」が機能しません。
$ ./eclipse/unittest.sh /foo/tests/bar
/foo/tests/bar
bash reg expで何かを選択するにはどうすればよいですか?
後にパターンを使用#
して、パターンまでのすべてを削除できます。最短一致を使用します。
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