
pwd
現在のディレクトリへのフルパスを提供します。例:
/first/second/third/anotherdir/thefinaldirectory
最初のn個、たとえば3つのディレクトリを省略するにはどうすればよいですか?
/anotherdir/thefinaldirectory
帰ってきた?
私はこれがうまくいくべきだと思いますかsed
?
答え1
Bashにはいくつかの組み込み文字列操作があります。
echo "/${PWD#/*/*/*/}"
答え2
たとえば、次のように使用できますcut
。
pwd | cut -d/ -f 4-
pwd
印刷はbyの出力を分割し/
、4番目のフィールドから最後まで印刷します。
あなたの場合は次のとおりです。
echo "/first/second/third/anotherdir/thefinaldirectory" | cut -d/ -f 5-
答え3
すべてのPOSIXの場合sed
:
pwd | sed 's,\(/[^/]*\)\{3\},,'
または:
pwd | sed -E 's,(/[^/]*){3},,'
-E
GNUとBSD sedで動作します近い将来に標準となる。