-4

我有很多文件,每个文件都有以下结构:

文件一:

1 x
2 r
3 f
4 t
: :
: :
1000 k

第二文件:

1 x
2 r
3 f
4 t
: :
: :
1000 k

有数百个这样的文件。 我需要一个最终输出文件作为每个文件的制表符分隔的第二列

输出文件:

x ..More Columns ... q
r ..... w
f ..... e
t ..... l
:       :
:       :

我更喜欢使用 Python 或 Bash 脚本。对不起这个愚蠢的问题。

这是我到目前为止的进展,为每个文件的第二列创建了一个 * 分隔字符串列表。但没有生成如何编写 代码的想法:

import tkinter.filedialog
def FileToString (fin):
    Result = ''
    for line in fin:
        LineList = line.strip().split(' ')
        Result = Result + '*' + LineList[1]
return (Result)


File = tkinter.filedialog.askopenfilenames(title='Select the Files you want>> >>> >> >>>>')
Filenames = File.split()
Result = []
ArrayResult = []
OutPutFileName = tkinter.filedialog.asksaveasfilename(title='Select or Enter Output File >>     >>>> >>>>')
fout = open(OutPutFileName,'w')
for name in Filenames:
    fin = open(name,'r')
    FileResult = FileToString(fin)
    ArrayResult.append(FileResult)

谢谢

4

2 回答 2

3

在命令行...

paste file1 file2 > file3

这是我的资料来源:鲜为人知的 Linux 命令:加入、粘贴和排序

如果这不是您要查找的内容,请回复,我会努力解决的。


试试这个……把“file*”和“out.txt”改成你需要的样子。

#!/bin/sh
outFile=out.txt
tmpFile=$$.tmp
for FILE in `ls file*`
do
    if [ ! -f ${tmpFile} ]; then
        # Need to seed the tmp file one first pass
        cp ${FILE} ${tmpFile}
        continue
    fi
    paste ${tmpFile} ${FILE} > ${outFile}
    mv ${outFile} ${tmpFile}
done
# Move the tmp file to output file
mv ${tmpFile} ${outFile}
于 2013-04-06T05:16:38.273 回答
0
awk '
{ a[FNR] = a[FNR] (NR==FNR?"":"\t") $2 }
END{ for (i=1;i<=FNR;i++) print a[i] }
' file1 file2 file3 ....
于 2013-04-08T05:17:58.227 回答