我是python的新手。我的要求很简单,如果我必须使用awk进行操作,则如下所示,

下面提到的文件(test.txt)用制表符分隔,

1 a b c
1 a d e
1 b d e
2 a b c
2 a d e
3 x y z


我想要的输出

文件1.txt应具有以下值

a b c
a d e
b d e


文件2.txt应具有以下值

a b c
a d e


文件3.txt应具有以下值

x y z


原始文件在第一列上排序。我不知道必须拆分的行号。它必须取决于价值的变化。使用awk,我会这样写

awk -F"\t" 'BEGIN {OFS="\t";} {print $2","$3","$4 > $1}' test.txt


(性能明智,python会更好吗?)

最佳答案

Awk非常适合此操作,应该快很多。速度真的是一个问题吗,您的投入有多大?

$ awk '{print $2,$3,$4 > ("file"$1)}' OFS='\t' file


演示:

$ ls
file

$ cat file
1 a b c
1 a d e
1 b d e
2 a b c
2 a d e
3 x y z

$ awk '{print $2,$3,$4 > ("file"$1)}' OFS='\t' file

$ ls
file  file1  file2  file3

$ cat file1
a b c
a d e
b d e

$ cat file2
a b c
a d e

$ cat file3
x y z

关于python - 在值更改时使用python拆分排序的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18495920/

10-16 11:45
查看更多