仅对文件bash的数字部分进行排序

时间:2015-05-10 05:17:59

标签: bash sorting numeric

我的输入文件是:

b; 1 ; b; 1
a; 5 ; a; 5
g; 2 ; g; 2

我想要一个输出:

b; 1 ; b; 1
a; 5 ; g; 2
g; 2 ; a; 5

有人可以帮我吗?

1 个答案:

答案 0 :(得分:3)

$ paste -d';' <(cut -d';' -f1,2 file) <( cut -d';' -f3,4 file | sort -t';' -n -k2)
b; 1 ; b; 1
a; 5 ; g; 2
g; 2 ; a; 5

如何运作

这将从输入文件中选择前两列:

$ cut -d';' -f1,2 file
b; 1
a; 5
g; 2

这将从输入文件中选择后两列,然后在最后一列上以数字方式对它们进行排序:

$ cut -d';' -f3,4 file | sort -t';' -n -k2
 b; 1
 g; 2
 a; 5

这将两个部分的流程替换<(...)用于paste

$ paste -d';' <(cut -d';' -f1,2 file) <( cut -d';' -f3,4 file | sort -t';' -n -k2)
b; 1 ; b; 1
a; 5 ; g; 2
g; 2 ; a; 5