对与 Linux 中的 txt 文件中的字符串关联的 IP 进行排序

对与 Linux 中的 txt 文件中的字符串关联的 IP 进行排序

有人可以帮助我从包含与其关联的 IP 的字符串的 .txt 文件中对 IP 进行数字排序吗?

txt内容:

string_A=10.a.y.155
string_B=10.a.y.212
string_C=10.a.y.104
string_D=10.a.y.10
string_E=10.a.y.198
string_U=10.b.x.155
string_V=10.b.x.212
string_X=10.b.x.104
string_Y=10.b.x.10
string_Z=10.b.x.198

我想要的输出:

10.a.x._ series in sorted way.

string_D=10.a.y.10
string_C=10.a.y.104
string_A=10.a.y.155
string_E=10.a.y.198
string_B=10.a.y.212

由于我们公司的数据政策,我不确定是否可以发布原始值。因此,用这些虚拟值代替。

答案1

使用-V(“版本排序”),大多数实现sort

$ sort -t '=' -k2 -V file
string_D=10.a.y.10
string_C=10.a.y.104
string_A=10.a.y.155
string_E=10.a.y.198
string_B=10.a.y.212
string_Y=10.b.x.10
string_X=10.b.x.104
string_U=10.b.x.155
string_Z=10.b.x.198
string_V=10.b.x.212

如果a=15并且b=140

$ sort -t '=' -k2 -V file
string_D=10.15.y.10
string_C=10.15.y.104
string_A=10.15.y.155
string_E=10.15.y.198
string_B=10.15.y.212
string_Y=10.140.x.10
string_X=10.140.x.104
string_U=10.140.x.155
string_Z=10.140.x.198
string_V=10.140.x.212

with使将-k2the之后的数据视为排序键。-t '='sort=

答案2

使用sort命令:

sort -t'=' -k2 file
  • -t'='-=作为字段分隔符的符号

  • -k2- 按第二个字段排序

输出:

string_D=10.a.y.10
string_C=10.a.y.104
string_A=10.a.y.155
string_E=10.a.y.198
string_B=10.a.y.212
string_Y=10.b.x.10
string_X=10.b.x.104
string_U=10.b.x.155
string_Z=10.b.x.198
string_V=10.b.x.212

答案3

使用:

sort -t. -nk1,1 -nk2,2 -nk3,3 -nk4,4 file

-n- 按数字排序

您需要排序四个字段中的每一个

相关内容