ファイル名とそれを含むディレクトリを取得するには、sed ワンライナーを使用します。

ファイル名とそれを含むディレクトリを取得するには、sed ワンライナーを使用します。

フルパス (DOS 構文) からファイル名とそれを含むディレクトリを抽出する必要があります。これはより大きな正規表現の一部であるため、sed を使用してこれを実行する必要があります。

入力例: ..\home\test\somedir\anotherdir\myfile.txt

予想される出力: anotherdir\myfile.txt

ご協力いただければ幸いです。

ありがとう

答え1

とにかく系統的に進めてください。行を 3 つの部分に分割します。任意のプレフィックス.*、2 つのバックスラッシュ、それに続く非バックスラッシュ文字です\\[^\\]*。最後から 2 番目のバックスラッシュの後の部分をキャプチャし、残りを削除します。

printf %s "$dos_path" | sed 's/^.*\\\([^\\]*\\[^\\]*\)$/\1/'

(echo一部のシェルではバックスラッシュが展開されるので注意してください。)

答え2

awk を使用しない特別な理由はありますか?

echo $DIR | awk -F'\' '{ print $(NF-1) "\\" $NF }'

関連情報