Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 如何根据路径/级别对URL排序?_Sorting_Url - Fatal编程技术网

Sorting 如何根据路径/级别对URL排序?

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

我想根据路径/级别对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/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相同的逻辑会更快。谢谢,让我检查一下嗨,我使用了这个代码。它根据路径按字母顺序进行排序。我想根据级别进行排序。我的意思是,首先要排序的是第一级,然后是第二级和第三级。让我们澄清一下——它首先根据有多少子目录进行排序,然后按字母顺序进行排序。如果这不是你想要的,请澄清。