对不起,标题太荒谬了;这可能就是为什么我无法在Google上找到答案的原因。
我想将5个文本文件合并为1个文件。我希望使用以下格式:
line1 of file1
line1 of file2
line1 of file3
line1 of file4
line1 of file5
line2 of file1
line2 of file2
line2 of file3
line2 of file4
line2 of file5
等等。
我尝试使用下面的bash命令,但对于sed来说似乎太多了:它只是将文本插入第一行,而不是我正在调用的变量的行。
for ((num=1; num<=66; num++)) ; do
queryline=$(sed -n "${num}p" "file2.txt")
sed -i "${num}i ${queryline}" "file1.txt"
done
(我也尝试过)
for ((num=1; num<=66; num++)) ; do
numa=$((num + 1))
queryline=$(sed -n "${num}p" "file2.txt")
sed -i "${numa}i ${queryline}" "file1.txt"
done
我认为使用python(3.4)可能会更容易,但是我不确定如何做到这一点。提示请任何人?
使用contextlib.ExitStack()将输入文件作为一个组来处理,并使用zip来读取所有文件中的行:
import contextlib
import os
filenames = ['a','b','c','d','e']
output_file = 'fred'
# setup files for test
for filename in filenames:
with open(filename, 'w') as fp:
for i in range(10):
fp.write('%s %d\n' % (filename, i))
if os.path.exists('fred'):
os.remove('fred')
# open all the files and use zip to interleave the lines
with open(output_file, 'w') as out_file, contextlib.ExitStack() as in_files:
files = [in_files.enter_context(open(fname)) for fname in filenames]
for lines in zip(*files):
# if you're not sure last line has a \n
for line in lines:
out_file.write(line)
if not line.endswith('\n'):
out_file.write('\n')
# if you are sure last line has a \n
# out_file.write(''.join(lines))
print(open('fred').read())
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句