我需要在第三个文件后删除文件中的所有内容。我不知道如何编写这个脚本,可以是bash或python。
该文件如下所示:
ssessment assay 5.83 8 10 5 6 4 5 7 3
incubate breed 6.40 10 6 10 5 7 4 7 7
incubate develop 7.20 7 7 8 6 7 7 9 10
脚本后面的文件应该是
ssessment assay 5.83
incubate breed 6.40
incubate develop 7.20
答案 0 :(得分:2)
使用简单的迭代。
<强>演示:强>
with open(filename, "r") as infile: #Read file
data = [line.split()[:3] for line in infile.readlines()] #Using list slicing to get only the required 3 elements
with open(filename, "w") as outfile: #Write File
for i in data:
outfile.write("{0}\n".format(" ".join(i)))
答案 1 :(得分:1)
这是一项简单的awk
任务:打印前三个字段。假设选项卡(\t
)是字段分隔符:
awk -F '\t' -v OFS='\t' '{print $1, $2, $3}' file.txt
-F '\t'
将输入字段分隔符设置为标签
-v OFS='\t'
将输出字段分隔符设置为标签
{print $1, $2, $3}
打印由OFS
分隔的前三个字段(我们已将其定义为标签)
另一方面,如果字段是空格/空格分隔,并且您希望它们在输出中以空格分隔,则这非常简单,因为awk
默认情况下将空格作为输入字段分隔符:< / p>
awk '{print $1, $2, $3}' file.txt
答案 2 :(得分:1)
你可以在bash中使用awk
执行此操作,但在python中它也很简单。读入行,将它们拆分为空白(这是默认值)并写出结果。如果你需要保留空格,那么这段代码就可以了:
lines = open(file_name, 'r').readlines()
output = open(output_file_name, 'w')
for line in lines:
contents = ''.join(line.split(' '))
item_ctr=0
for item in contents:
if item != '':
item_ctr += 1
output.write(item+' ')
if item_ctr == 3:
break
else:
output.write(' ')
output.write('\n')
output.close()
答案 3 :(得分:1)
当我看到这个问题时,我首先提出了这个问题:
awk 'NF=3' file
如果您希望输出内容由TAB
分隔:
awk 'NF=3' OFS="\t" file