<p>可以用正则表达式解析这些行。
对于要显示的字段,可以将它们放在捕获组中,方法是将正则表达式的相关部分用括号括起来。
您可以使用regex匹配结果上的group()方法提取这些捕获组。你知道吗</p>
<pre><code>import re
# joblist list will store each line of parsed output
joblist=[]
prog = re.compile('^(\d+)\..*\s+.*\s+\w+\s+(.*)\s+(\w)\s+(.*)$')
with open('job.txt','r') as jobfile:
for line in jobfile.readlines():
result = prog.match(line)
# Handle header line and skip lines that don't match regex
if result is None:
continue
else:
joblist.append(' '.join([result.group(1), result.group(2), result.group(3), result.group(4)]))
# displaying the list
for job in joblist:
print job
</code></pre>
<p>您提供的数据:</p>
<pre><code>macbook:Downloads joeyoung$ cat job.txt
Job id Name User Time Use S Queue
48638.cluster ...01R-1850-01_2 mcbkss 0 Q qp32
48738.cluster case3sqTS1e-4 mecvamsi 588:30:5 R qp32
48758.cluster meshA5 mecmdjim 45:00:40 R qp32
48638.tyrone-cluster ...01R-1850-01_2 mcbkss 0 Q qp32
48708.tyrone-cluster ...onwgs_entries mbupi 0 Q qp32
48736.tyrone-cluster ...01R-1850-01_1 mcbkss 0 Q batch
48737.tyrone-cluster ...01R-1850-01_2 mcbkss 0 Q batch
</code></pre>
<p>脚本对上述数据的输出(包括第2列中的newly request time字段):</p>
<pre><code>macbook:Downloads joeyoung$ python parsejob.py
48638 0 Q qp32
48738 588:30:5 R qp32
48758 45:00:40 R qp32
48638 0 Q qp32
48708 0 Q qp32
48736 0 Q batch
48737 0 Q batch
</code></pre>
<p>分析后的数据可在<strong>作业列表</strong>列表变量中找到。你知道吗</p>