Sorting 如何根据路径/级别对URL排序?
我想根据路径/级别对URL进行排序。我怎么做?它可以是一个在线工具/PHP/bash/linux脚本,任何东西都可以Sorting 如何根据路径/级别对URL排序?,sorting,url,Sorting,Url,我想根据路径/级别对URL进行排序。我怎么做?它可以是一个在线工具/PHP/bash/linux脚本,任何东西都可以 example.com/a example.com/b example.com/c example.com/aaa/1 example.com/aaa/2 example.com/aaa/3 example.com/aaa/bbb/apath example.com/aaa/bbb/bpath example.com/aaa/bbb/cpath example.com/aaa/b
example.com/a
example.com/b
example.com/c
example.com/aaa/1
example.com/aaa/2
example.com/aaa/3
example.com/aaa/bbb/apath
example.com/aaa/bbb/bpath
example.com/aaa/bbb/cpath
example.com/aaa/bbb/path/1
example.com/aaa/bbb/path/2
我把你的输入重新排列成一个循环。
我将输入行分配给第二个键,将非分隔符分条,并在键前面加上前缀,然后打印新行
我通过管道将循环传输到一个sort,并通过管道将已排序的输出传输到一个sed,以去除预先设置的键
我没有太多地使用${x//}构造,所以可能有一种比下划线转换更干净的方法,我很期待看到它,哈哈
$: echo "example.com/a
example.com/c
example.com/aaa/bbb/path/1
example.com/aaa/3
example.com/aaa/bbb/apath
example.com/aaa/2
example.com/aaa/bbb/bpath
example.com/aaa/1
example.com/aaa/bbb/cpath
example.com/b
example.com/aaa/bbb/path/2" |
while read line
do key=${line//\//_}
key=${key//[^_]/}
printf "$key\t$line\n"
done | sort |sed 's/^_* //'
example.com/a
example.com/b
example.com/c
example.com/aaa/1
example.com/aaa/2
example.com/aaa/3
example.com/aaa/bbb/apath
example.com/aaa/bbb/bpath
example.com/aaa/bbb/cpath
example.com/aaa/bbb/path/1
example.com/aaa/bbb/path/2
与awk相同的逻辑会更快。谢谢,让我检查一下嗨,我使用了这个代码。它根据路径按字母顺序进行排序。我想根据级别进行排序。我的意思是,首先要排序的是第一级,然后是第二级和第三级。让我们澄清一下——它首先根据有多少子目录进行排序,然后按字母顺序进行排序。如果这不是你想要的,请澄清。