Text Linux连接不同长度的列文件
我见过很多类似的问题,但我没有找到答案。我有几个文本文件,每个文件有两列,但每个文件中的列长度不同,例如Text Linux连接不同长度的列文件,text,Text,我见过很多类似的问题,但我没有找到答案。我有几个文本文件,每个文件有两列,但每个文件中的列长度不同,例如 file1: type val 1 2 2 4 3 2 file2: type val 1 9 2 8 3 9 4 7 I want: type val type val 1 2 1 9 2 4 2 8 3 2 3 9 4 7 “join”给出如下内容: type val
file1:
type val
1 2
2 4
3 2
file2:
type val
1 9
2 8
3 9
4 7
I want:
type val type val
1 2 1 9
2 4 2 8
3 2 3 9
4 7
“join”给出如下内容:
type val type val
1 2 1 9
2 4 2 8
3 2 3 9
4 7
我可以写一个脚本,但我想知道是否有一个简单的命令。
谢谢,好的,迫不及待地想得到答案,所以写了一个python脚本。这里是它的情况下,它有用的任何人
import sys
import os
#joins all the tab delimited column files in a folder into one file with multiple columns
#usage joincolfiles.py /folder_with_files outputfile
folder = sys.argv[1] #working folder, put all the files to be joined in here
outfile=sys.argv[2] #output file
cols=int(sys.argv[3]) #number of columns, only works if each file has same number
g=open(outfile,'w')
a=[]
b=[]
c=0
for files in os.listdir(folder):
f=open(folder+"/"+files,'r')
b=[]
c=c+1
t=0
for line in f:
t=t+1
if t==1:
b.append(str(files)+line.rstrip('\n'))
else:
b.append(line.rstrip('\n')) #list of lines
a.append(b) #list of list of lines
f.close()
print "num files", len(a)
x=[]
for i in a:
x.append(len(i))
maxl = max(x) #max length of files
print 'max len',maxl
for k in range(0,maxl): #row number
for j in a:
if k<len(j):
g.write(j[k]+"\t")
else:
g.write("\t"*cols)
g.write("\n")
g.close()
导入系统
导入操作系统
#将文件夹中所有以制表符分隔的列文件合并到一个包含多列的文件中
#使用joincolfiles.py/folder_和_files outputfile
folder=sys.argv[1]#工作文件夹,将所有要加入的文件放在这里
outfile=sys.argv[2]#输出文件
cols=int(sys.argv[3])#列数,仅当每个文件的列数相同时才有效
g=打开(输出文件,'w')
a=[]
b=[]
c=0
对于os.listdir(文件夹)中的文件:
f=打开(文件夹+“/”+文件,'r')
b=[]
c=c+1
t=0
对于f中的行:
t=t+1
如果t==1:
b、 追加(str(files)+line.rstrip('\n'))
其他:
b、 追加(line.rstrip('\n'))#行列表
a、 附加(b)#行列表
f、 关闭()
打印“num文件”,len(a)
x=[]
对于我来说,在一个:
x、 附加(len(i))
maxl=max(x)#文件的最大长度
打印“最大长度”,最大长度
对于范围(0,最大值)中的k:#行数
对于a中的j:
如果kOk等不及回答,那么就编写了一个python脚本。这里是它的情况下,它有用的任何人。