我想.crs
使用 筛选文件bash
,并从文件中获取字段.crs
并将它们放入模板中。
例如,假设这是一个.crs
文件:
MAT Mathematics
TH 8/26/10 12/12/19
Data Analysis and Intepretation
60
我想查看第 4 行。如果该数字高于 50,我想创建一个如下所示的模板:
Hi your class [[className]] has [[numStudents]]. This is too many. It starts on [[startDate]] and ends on [[endDate]].
我如何告诉 bash 我想要获取第 1 行 (MAT) 的第一个元素并将其放在[[classCode]]
每次看到它的位置?
答案1
一个程序怎么样awk
。假设课程信息始终如图所示布局,并且每个 CRS 文件只有一个课程信息,则执行以下操作:
awk 'FNR==1{class=$1}
FNR==2{start=$2; end=$3}
FNR==4{if ($1>50) printf("Your class %s has %d students. This is too many.\nIt starts on %s and ends on %s\n",class,$1,start,end)}' example.crs
这根据行号解析文件(使用 的FNR
内部每个文件行计数器变量awk
),因此依赖于示例中显示的确切结构。这也意味着您可以一次将其应用于多个文件,如下所示
awk ' ... ' *.csr
如果当前目录中有多个课程定义文件。
答案2
#!/usr/bin/python
import os
k=open('filename','r')
o=k.readlines()
u1=o[0].strip().split(' ')[0]
u2=o[1].strip().split(' ')
st= u2[1]
en= u2[2]
if (int(o[3].strip()) > 50):
print "Hi your class {0} has {1}. This is too many. It starts on {2} and ends on {3}.".format(u1,o[3].strip(),st,en)
测试并运行良好