.crsファイルとコマンドラインの情報を使用して出力ファイルテンプレートを作成します。

.crsファイルとコマンドラインの情報を使用して出力ファイルテンプレートを作成します。

.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)

テストを経てうまく機能しました

関連情報