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

The*_*tor 0 bash awk shell-script

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

/folder1/folder2/folder3/folder4/folder5/folder6
Run Code Online (Sandbox Code Playgroud)

我只对前四个值感兴趣,bash 中仅打印由反斜杠分隔的第一个目录的最佳方法是什么,例如:

/folder1/folder2/folder3/folder4
Run Code Online (Sandbox Code Playgroud)

小智 8

使用 awk:

echo /folder1/folder2/folder3/folder4/folder5/folder6 |\
    awk -F/ -vOFS=/ '{ print $1,$2,$3,$4,$5; }'
Run Code Online (Sandbox Code Playgroud)

OFS = 输出字段分隔符。

$1 .. $5由于前导斜杠计数为1.

使用切割:

echo /folder1/folder2/folder3/folder4/folder5/folder6 |\
    cut -f -5 -d/
Run Code Online (Sandbox Code Playgroud)

使用 sed:

echo /folder1/folder2/folder3/folder4/folder5/folder6 |\
    sed 's:\(\(/[^/]\+\)\{4\}\).*:\1:'
Run Code Online (Sandbox Code Playgroud)

  • 在这里都赞成 **cut** :) (2认同)