.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 파일당 강좌 정보가 하나만 있다고 가정하고 다음을 수행합니다.
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)
테스트를 거쳐 잘 작동함