我正在尝试读取许多文件,并从这些文件中将特定列写入另一个文件。我读了它是如何完成但它不起作用的。有人可以帮助我在我的脚本中实现pawk吗?
j = j + 1
#with open('a1_gather_{j}.txt'.format(j=j)) as f2:
f2 = open('a1_gather_{j}.txt'.format(j=j), 'w')
k=k+1
print k
f1 = open('a1_{k}'.format(k=k))
# with open('a1_{k}'.format(k=k), 'a') as f1:
lines = f1.readlines()
for i, line in enumerate(lines):
print i
if line.startswith(searchquery):
f2.write(line)
f2.write(lines[i + 1])
f2.write(lines[i + 2])
i = i+1
else :
i = i+1
#os.close(f1)
f1.close()
# awk '{a[FNR]=a[FNR]?a[FNR]" "$2:$2}END{for(i=1;i<=length(a);i++)print a[i]}' *
f2.close()
我更喜欢f = open
而不是with open
,以避免错误IOError: (9, 'Bad file descriptor')
。
要读取的文件有1000行和2列。我只需要将每个文件的第二列写入另一个文件。
有人可以更正我的脚本并说明如何使用pawk?
答案 0 :(得分:1)
对于此特定任务,您可以完全放弃python,而是使用cut
命令:
cut -f2 a1_{1..10}.txt > a1_gather.txt
默认情况下,它使用制表符作为列分隔符,-d
选项可让您更改它。
{start..stop}
表示法可以更好地控制匹配的文件。
答案 1 :(得分:0)
假设您需要将a1_*
个文件中的第二列写入a1_gather
文件并使用 awk ,如评论中所述,您可以在终端中运行简单命令:
cat a1_* | awk '{print $2}' > a1_gather
其中:
cat a1_*
代表文件名以a1_
awk '{print $2}'
表示打印第二列 > a1_gather
并将其保存到文件a1_gather
如果您将来更有兴趣使用awk,this is really useful tutorial可以学习。
答案 2 :(得分:0)
f2 = open('a1_gather_{j}.txt'.format(j=j), 'w')
f1 = open('a1_{k}.txt'.format(k=k))
lines = f1.readlines()
for i, line in enumerate(lines):
print(repr(line))
f2.write(line)
i = i+1
f1.close()
f2.close()
这一行读写整行。我也可以使用它,但任何关于知识的建议如何只能读取和写入第二列是受欢迎和欢迎。