0

これが例です

SF_Library/example/Platform/Analyses-PLATFORM.part0.xml
SF_Library/example/Platform/Models-PLATFORM.part0.xml
SF_Library/example/Platform/Models-PLATFORM.car
SF_Library/example/Platform/DS-PLATFORM.car

フォローしているベースパスを取得したい。

SF_Library/example/Platform/

どの正規表現を使用すればよいか知っている人はいますか?

4

4 に答える 4

7

正規表現は必要ありません:

#!/bin/bash

fullpath="SF_Library/example/Platform/Analyses-PLATFORM.part0.xml"
# or if you read them then: while read fullpath; do

basename=${fullpath%/*}

# or if you read them then: done < input_file.txt
于 2012-11-14T20:42:15.973 に答える
3

正規表現は、部分文字列を抽出するためのものではありません。dirnameコマンドを使用しないのはなぜですか?

$ dirname /home/foo/whatever.txt
/home/foo
$

変数で必要な場合:

DIRECTORY=`basename "SF_Library/example/Platform/DS-PLATFORM.car"`
于 2012-11-14T20:42:33.850 に答える
2

dirnameコマンドを使用できます。

dirname SF_Library/example/Platform/DS-PLATFORM.car

それはあなたに与えるでしょう:SF_Library/example/Platform

于 2012-11-14T20:42:31.710 に答える
1

わかりました、私はあなたを甘やかします。

^(.*/).*$

解剖:

^     beginning of string
(     start of capture group
  .*  series of any number of any character
  /   a slash
)     end of capture group
.*    series of any number of characters that are not slashes
$     end of string

これ*は貪欲であるため機能します。可能な限り多くの文字に一致します (したがって、最後のスラッシュまですべてのスラッシュが含まれます)。

しかし、他の回答が指摘しているように、正規表現はおそらくこれを行うための最良の方法ではありません.

于 2012-11-14T20:43:14.847 に答える