私が与えた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:/[^/]*/[^/]*::'