我有一个打印目录树的变量,例如:
/folder1/folder2/folder3/folder4/folder5/folder6
我只对前四个值,在 bash 中仅打印由反斜杠分隔的第一个目录的最佳方法是什么,例如:
/folder1/folder2/folder3/folder4
答案1
使用 awk:
echo /folder1/folder2/folder3/folder4/folder5/folder6 |\
awk -F/ -vOFS=/ '{ print $1,$2,$3,$4,$5; }'
OFS
= 输出字段分隔符。
$1 .. $5
由于前导斜杠计数为 ,所以需要1
。
使用剪切:
echo /folder1/folder2/folder3/folder4/folder5/folder6 |\
cut -f -5 -d/
使用 sed:
echo /folder1/folder2/folder3/folder4/folder5/folder6 |\
sed 's:\(\(/[^/]\+\)\{4\}\).*:\1:'
答案2
如果有巴什并var
有能力
echo ${var%/${var#/*/*/*/*/}}
另一种方式
IFS=/ var=($var)
printf '%b/' "${var[@]::5}\n\c"