切り取りますが、最後の区切り文字は維持しますか?

切り取りますが、最後の区切り文字は維持しますか?

私が与えたecho "/home/user/test/folder" | cut -d'/' -f4-

test/folder

しかし、最後の区切り文字を維持したいと思います。予想される結果は次のとおりです。

/test/folder

達成する方法cut?

ベストアンサー1

bash 組み込み機能のみ使用

strip_slashes(){
   declare -n stripped=$1
   local -i i      
   stripped=$3
   for((i=0;i<$2;i++)) ; do
       stripped=${stripped#*/}
   done
   stripped="/$stripped"
}

これは次のように呼ばれます。

strip_slashes X 3 "/home/user/test/folder"
echo $X

最初の引数は結果を保持する変数の名前で、その後に削除するスラッシュの数、削除するスラッシュの値が続きます。

結果を保存するために変数名を渡すことは、名前をハードコードする必要がなく(たとえば、デフォルトで選択および読み取りに使用されるREPLY)、サブシェルも必要ないことを意味します。その後、declare -n stripped指定された変数のエイリアスが続きます。

sedソリューション。 GNU sedの使用

echo /home/user/test/folder | sed -E 's:(/[^/]*){2}::'

より持ち運びに便利

echo /home/user/test/folder | sed 's:/[^/]*/[^/]*::'

おすすめ記事