gpt4 book ai didi

linux - 如何从路径中删除最短的子路径?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:05:13 25 4
gpt4 key购买 nike

我有一个包含一些目录结构的字符串。

dirs='Rootdir/ 
Secondrootdir/
Rootdir/Subdir/
Secondrootdir/Anothersubdir/
Secondrootdir/Thirdsubdir/
Secondrootdir/Anothersubdir/Subsubdir/'

我想过滤它并得到以下内容:

dirs='Rootdir/Subdir/ Secondrootdir/Thirdsubdir/ 
Secondrootdir/Anothersubdir/Subsubdir/'

请帮帮我。

最佳答案

也许是这样的:

dirs="Rootdir/ Secondrootdir/ Rootdir/Subdir/ Secondrootdir/Anothersubdir/ Secondrootdir/Thirdsubdir/ Secondrootdir/Anothersubdir/Subsubdir/"

echo $dirs \
| tr ' ' '\n' \
| sed -e 's#\([^/]\)$#\1/#' \
| sort -r \
| gawk '!index(prev,$0){print;} {prev=$0;}'

这产生

Secondrootdir/Thirdsubdir/
Secondrootdir/Anothersubdir/Subsubdir/
Rootdir/Subdir/

此处,tr 首先将以空格分隔的输入拆分为单独的行。 sed 确保每个路径都以斜杠结尾。结合 sort -r,这会导致如果路径 p 是路径 q 的子路径,则 q 在排序后的输出中排在第一位。最后,gawk 只过滤那些不是前一个路径的子路径的路径。由于特定的排序顺序,这有效地只选择了目录结构的叶子......

关于linux - 如何从路径中删除最短的子路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43295210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com