使用unix工具和多列进行排序

时间:2011-06-09 15:53:51

标签: bash unix sorting awk

我正在寻找解决此问题的最简单方法。我有一个巨大的数据集,我无法加载到这种类型的格式

This is a sentence|10
This is another sentence|5
This is the last sentence|20

我想要做的是根据数字从最小到最大排序。

cat MyDataSet.txt | tr "|" "\t" | ???

不确定这样做的最佳方式是什么,我正在考虑使用awk来切换列并进行排序,但是我无法做到这一点。

请帮帮我

5 个答案:

答案 0 :(得分:35)

sort -t\| -k +2n dataset.txt

应该这样做。字段分隔符和备用密钥选择

答案 1 :(得分:13)

您通常不需要cat将文件发送到过滤器。也就是说,您可以使用 sort 过滤器。

sort -t "|" -k 2 -n MyDataSet.txt

使用|对MyDataSet.txt文件进行排序字符作为字段分隔符,并根据第二个字段(数字)进行数字排序。

答案 2 :(得分:7)

你尝试过排序-n

吗?
$ sort -n inputFile
This is another sentence|5
This is a sentence|10
This is the last sentence|20

你也可以用awk切换列

$ awk -F"|" '{print $2"|"$1}' inputFile
10|This is a sentence
5|This is another sentence
20|This is the last sentence

结合awk和sort:

$ awk -F"|" '{print $2"|"$1}' inputFile | sort -n
5|This is another sentence
10|This is a sentence
20|This is the last sentence

每条评论

如果句子中有数字

$ sort -n -t"|" -k2 inputFile
This is another sentence|5
This is a sentence|10
This is the last sentence|20
this is a sentence with a number in it 2|22

当然你可以将它重定向到一个新文件:

$ awk -F"|" '{print $2"|"$1}' inputFile | sort -n > outFile

答案 3 :(得分:3)

尝试此排序命令:

sort -n -t '|' -k2 file.txt

答案 4 :(得分:2)

按编号排序,更改分隔符并使用sort获取第二组。

sort -n -t'|' -k2 dataset.txt