我的文件中包含以下内容:
172.16.0.3 3.2.10 User exists
172.16.0.2 1.1.11 User don't exist
172.16.0.4 4.1.1 User exists
172.16.0.4 4.1.13 User exists
172.16.0.3 3.5.4 User exists
172.16.0.2 3.1.15 User exists
我想按第一列对其进行排序,然后按数字顺序对第二列进行排序。我知道sort
命令及其-k
和-t
选项。但是,由于第1列和第2列都有相同的定界符.
,所以我不确定如何实现我的目标。
我预期的sort -n -t . -k 1,1 -k 2,2
生成方式(请注意,172.16.0.4
之前4.1.1
之前4.1.13
的排序未正确完成):
172.16.0.2 1.1.11 User don't exist
172.16.0.2 3.1.15 User exists
172.16.0.3 3.2.10 User exists
172.16.0.3 3.5.4 User exists
172.16.0.4 4.1.13 User exists
172.16.0.4 4.1.1 User exists
所需的输出应如下所示:
172.16.0.2 1.1.11 User don't exist
172.16.0.2 3.1.15 User exists
172.16.0.3 3.2.10 User exists
172.16.0.3 3.5.4 User exists
172.16.0.4 4.1.1 User exists
172.16.0.4 4.1.13 User exists
请问如何实现?
答案 0 :(得分:0)
使用GNU排序:sort -V file
-V
:文本中自然的(版本)数字
输出:
172.16.0.2 3.1.15 User exists
172.16.0.3 3.2.10 User exists
172.16.0.3 3.5.4 User exists
172.16.0.4 4.1.1 User exists
172.16.0.4 4.1.13 User exists