awk 打印目录树中的前三个文件夹,以 / 分隔

awk 打印目录树中的前三个文件夹,以 / 分隔

我有一个打印目录树的变量,例如:

/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"

相关内容