.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]].
[[classCode]]
行1(MAT)の最初の要素を取得し、表示するたびに必要な場所に配置したいと bash にどのように言いますか。
答え1
プログラムはどうですかawk
?コース情報が常に示されているとおりに配置され、CRSファイルごとに1つのコース情報しかないとします。
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)
テストを経てうまく機能しました