Pou*_*uya 23 text-processing sort
请允许我澄清:
假设我有一些关键字及其使用频率:
12 Hi
7 Hash
7 C++
9 Superuser
17 Stackoverflow
9 LaTeX
42 Life
9 Ubuntu
Run Code Online (Sandbox Code Playgroud)
我想要的是根据频率降序对这些数据进行排序,如果有一些相等的值,它应该按升序使用第二列。
sort -n -r foo.txt
Run Code Online (Sandbox Code Playgroud)
第一部分但第二列是否也是reversed:
42 Life
17 Stackoverflow
12 Hi
9 Ubuntu
9 Superuser
9 LaTeX
7 Hash
7 C++
Run Code Online (Sandbox Code Playgroud)
我怎样才能达到以下结果?
42 Life
17 Stackoverflow
12 Hi
9 LaTeX
9 Superuser
9 Ubuntu
7 C++
7 Hash
Run Code Online (Sandbox Code Playgroud)
我想我必须使用-k参数,但我不知道如何使用!
我想知道这是如何使用单独完成sort的命令bash。但是,如果仅通过 无法实现此目的sort,则其他命令应与 Bourne shell 兼容。
dev*_*ull 34
使用条件单独指定排序键:
sort -k1,1nr -k2,2 inputfile
Run Code Online (Sandbox Code Playgroud)
这指定第一个键按相反顺序按数字排序,而第二个键按默认排序顺序排序。
引用POSIX 排序:
-k 密钥定义
该keydef参数是一个受限制的排序键字段定义。这个定义的格式是:
field_start [类型][ ,field_end [类型]]
其中field_start和field_end定义了仅限于行的一部分的关键字段(请参阅扩展描述部分),并且 type 是来自字符 'b'、'd'、'f'、'i'、' 的修饰符n','r'。'b' 修饰符的行为与
-b选项类似,但仅适用于它所附加的field_start或field_end。其他修饰符的行为应与相应的选项类似,但仅适用于它们所附加的关键字段;如果使用field_start、field_end或两者指定,它们将具有此效果。,任何选项均不适用。实现应支持-k选项的至少九次出现,这在命令行顺序中应该是重要的。如果未-k指定选项,则应使用整行的默认排序键。当有多个键域时,后面的键只有在所有前面的键比较相等后才进行比较。除了在
-u指定的选项,否则比较相等线,责令仿佛没有的选项-d,-f,-i,-n,或-k存在(但-r仍然有效,如果指定了),并在该显著行的所有字节比较。未指定仍然比较相等的行的写入顺序。
这将产生:
42 Life
17 Stackoverflow
12 Hi
9 LaTeX
9 Superuser
9 Ubuntu
7 C++
7 Hash
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108514 次 |
| 最近记录: |