Python或命令行实用程序 - 排序和过滤文件?

时间:2011-08-26 21:28:08

标签: python command-line text-processing

给出表格的数据:

a b 1.1
c d 2.3
b a 1.1

是否可以根据thired列对这样的文件进行排序,并删除第三列中的条目重复的行,这样输出将是:

a b 1.1
c d 2.3

,或者

c d 2.3
b a 1.1

我只能使用python,R或命令行实用程序在一组非常大的文件上执行此任务。

谢谢!

2 个答案:

答案 0 :(得分:8)

Unix sort应该能够为你完成工作:

cat file | sort -u -k3,3n
a b 1.1
c d 2.3
cat file | sort -u -k3,3rn
c d 2.3
a b 1.1

答案 1 :(得分:2)

f = open('text.txt','rb')
filter = []
rows = []
for line in f:
    line = line.replace('\r\n','')
    data = line.split(' ')
    if len(data) >= 3:
        if not data[2] in filter:
            filter.append(data[2])
            rows.append(data)
f.close()

f = open('output.txt','wb')
for row in rows:
    f.write(row[0] + ' ' + row[1] + ' ' + row[2] + '\r\n')
f.close()